String input, text; // строк класса String
//консольный вывод
System.out.println("Лабораторная работа №6-2");
System.out.println("Вариант №0");
System.out.println("ПО-11-1");
System.out.println("Пупкин Василий");
System.out.println();
// вызов диалогового окна ввода исходных данных
input=JOptionPane.showInputDialog("Нижняя граница диапазона massiv_min:");
// преобразование из строкового значения в целое
massiv_min=Integer.parseInt(input);
input=JOptionPane.showInputDialog("Верхняя граница диапазона massiv_max:");
massiv_max=Integer.parseInt(input);
input=JOptionPane.showInputDialog("Размер квадратного массива n:");
n=Integer.parseInt(input);
// формирование строки вывода
text="Значения входных переменных:\nmassiv_min=" + massiv_min +
"\nmassiv_max=" + massiv_max + "\nn=" + n;
// вызов диалогового окна эхо-печати
JOptionPane.showMessageDialog(null, text);
//консольный вывод
System.out.printf("massiv_min=%d\nmassiv_max=%d\nn=%d\n",
massiv_min, massiv_max, n);
System.out.println();
// создание квадратного массива nXn элементов
int massiv[][]=new int[n][n];
//консольный вывод
System.out.println("Исходный массив:");
// создание объекта Rand класса Random - генератора случ. чисел
// инициализация генератора случайных чисел,
// привязка его к системному времени
Random Rand=new Random();
// формирование массива случайным образом
for (int i=0; i<n; i++)
{
// получение случайного числа в диапазоне
// от massiv_min до massiv_max
for (int j=0; j<n; j++)
{
massiv[i][j]=Rand.nextInt(massiv_max-massiv_min+1) + massiv_min;
//консольный вывод элемента массива
System.out.printf("%5d", massiv[i][j]);
}
//консольный вывод
System.out.println();
}
//консольный вывод
System.out.println();
// вычисления по заданному алгоритму
for (int i=0; i<n ; i++) //меняем местами соответствующие элементы
{ //главной и побочной диагоналей
temp = massiv[i][i];
massiv[i][i] = massiv[i][n-i-1];
massiv[i][n-i-1] = temp;
}
//консольный вывод массива
System.out.println("Выходной массив:");
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
System.out.printf("%5d", massiv[i][j]);
System.out.println();
}
System.out.println();
}
}
3.4. На языке PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
Лабораторная работа №6_2
</title>
</head>
<body BgColor="silver" text="blue">
<H2>Лабораторная работа №6_2</h2>
<H3>Массивы</h3>
Вариант №0
<br>ПО-11-1
<br>Пупкин Василий
<br>
<br>
<Form name="LabRab_6_2" action="" method="POST">
Нижняя граница диапазона massiv_min:<br>
<input type="text" name="massiv_min" size="5"><br>
Верхняя граница диапазона massiv_max:<br>
<input type="text" name="massiv_max" size="5"><br>
Размер вектора n:<br>
<input type="text" name="n" size="5"><br>
<input type="submit" value="Вычислить"><br>
</form>
<?php
// получение значения переменной из формы
$massiv_min=$_POST['massiv_min'];
$massiv_max=$_POST['massiv_max'];
$n=$_POST['n'];
if (($n!='') && ($massiv_min!='') && ($massiv_max!=''))
{
//эхо-печать
echo "<br>n=$n";
echo "<br>massiv_min=$massiv_min";
echo "<br>massiv_max=$massiv_max<br>";
// инициализация генератора случайных чисел
mt_srand(time());
// заполнение массива целыми случайными числами
// от vector_min до vector_max
for ($i=0; $i<$n; $i++)
for ($j=0; $j<$n; $j++)
$massiv[$i][$j]=mt_rand($massiv_min, $massiv_max);
// вывод исходного массива на экран
echo '<br>Исходный массив:<br>';
for ($i=0; $i<$n; $i++)
{
for ($j=0; $j<$n; $j++)
printf("%'.5d", $massiv[$i][$j]);
echo '<br>';
}
// меняем местами главную и побочную диагонали
for ($i=0; $i<$n ; $i++)
{
$temp = $massiv[$i][$i];
$massiv[$i][$i] = $massiv[$i][$n-$i-1];
$massiv[$i][$n-$i-1] = $temp;
}
// вывод выходного массива на экран
echo '<br>Выходной массив:<br>';
for ($i=0; $i<$n; $i++)
{
for ($j=0; $j<$n; $j++)
printf("%'.5d", $massiv[$i][$j]);
echo '<br>';
}
echo '<br>';
}
?>
</body>
</html>
4. Компиляция, отладка, тестирование и получение результата:
Задания на лабораторную работу №6
Размеры исходных векторов и массивов задавать именованными константами. Для задания элементов исходных векторов и массивов использовать генератор случайных чисел с заданным с консоли диапазоном. Вывести на экран исходные и выходные векторы и массивы. Никакие другие массивы (рабочие) кроме исходных и выходных, не использовать.
Вариант 1
Задание 1
В целочисленном векторе vectorn найти минимальный и максимальный элементы. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Элементы вектора, расположенные между ними, отсортировать по возрастанию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 -2 1 3 -5 5 2 0 10 1
Выходные данные:
min=-5 n_min=5
max=10 n_max=9
Выходной вектор:
7 -2 1 3 -5 0 2 5 10 1
Задание 2
Вывести на экран построчно элементы всех слоев целочисленного прямоугольного массива matrixnm , начиная с внешнего слоя. Вывод начинать с левого верхнего элемента слоя.
Входные данные для n=3, m=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
Выходные данные:
7 -2 -11 3 -5 1 -18 8 -12 9 -15 5
2 0 10
Вариант 2
Задание 1
В целочисленном векторе vectorn найти минимальный и максимальный элементы. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Перевернуть элементы вектора, расположенные между ними (выполнить “поплавок”).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 -5 1 3 -2 5 2 0 10 1
Выходные данные:
min=-5 n_min=2
max=10 n_max=9
Выходной вектор:
7 -5 0 2 5 -2 3 1 10 1
Задание 2
В целочисленном массиве matrixnn поменять местами (отразить зеркально) соответствующие элементы, расположенные выше главной и побочной диагоналей и ниже их. Элементы диагоналей не трогать.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
7 -17 2 4 -5
5 2 9 10 1
-15 9 -12 8 -18
0 -10 0 -13 4
-1 -2 -11 3 -19
Вариант 3
Задание 1
В целочисленном векторе vectorn найти его вторые по значению минимальный и максимальный элементы и поменять их местами. Предусмотреть случай, когда таких элементов нет.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 -5 1 3 -2 5 2 0 10 1
Выходные данные:
min_2=-2 n_min_2=5
max_2=7 n_max_2=1
Выходной вектор:
-2 -5 1 3 7 5 2 0 10 1
Задание 2
В целочисленном массиве matrixnn поменять местами (отразить зеркально) соответствующие элементы, расположенные левее главной и побочной диагоналей и правее них. Элементы диагоналей не трогать.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
7 -2 -11 3 -5
1 2 0 10 5
-18 8 -12 9 -15
4 -10 9 -13 0
-1 -17 2 4 -19
Вариант 4
Задание 1
В целочисленном векторе vectorn найти его вторые по значению минимальный и максимальный элементы. Предусмотреть случай, когда таких элементов нет. Элементы вектора, расположенные между ними, отсортировать по возрастанию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 3 1 -5 -2 5 2 0 10 1
Выходные данные:
min_2=-2 n_min_2=5
max_2=7 n_max_2=1
Выходной вектор:
7 -5 1 3 -2 5 2 0 10 1
Задание 2
Целочисленный массив matrixnn повернуть на 90 градусов по часовой стрелке.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
-1 0 -5 5 7
-17 -10 9 2 -2
2 9 -12 0 -11
4 -13 8 10 3
-19 4 -18 1 -5
Вариант 5
Задание 1
В целочисленном векторе vectorn найти его вторые по значению минимальный и максимальный элементы. Предусмотреть случай, когда таких элементов нет. Перевернуть элементы вектора, расположенные между ними (выполнить “поплавок”).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 3 1 -5 -2 5 2 0 10 1
Выходные данные:
min_2=-2 n_min_2=5
max_2=7 n_max_2=1
Выходной вектор:
7 -5 1 3 -2 5 2 0 10 1
Задание 2
Заданный k-ый слой элементов целочисленного массива matrixnn повернуть на 90 градусов по часовой стрелке. Номер слоя k задать с консоли.
Входные данные для n=5, k=2:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
7 -2 -11 3 -5
5 -10 9 2 1
-15 9 -12 0 -18
0 -13 8 10 4
-1 -17 2 4 -19
Вариант 6
Задание 1
В целочисленном векторе vectorn найти минимальное положительное и максимальное отрицательное числа, не входящие в этот вектор. Предусмотреть случай, когда таких элементов нет.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 3 1 -5 -2 5 2 0 8 1
Выходные данные:
min_pol_not=4
max_otr_not=-1
Задание 2
В заданном k-ом слое элементов целочисленного прямоугольного массива matrixnm сдвинуть все элементы на один шаг вправо. Номер слоя k задать с консоли.
Входные данные для n=4, m=5, k=2:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
Выходной массив:
7 -2 -11 3 -5
5 9 2 0 1
-15 -12 8 10 -18
0 -10 9 -13 4
Вариант 7
Задание 1
В целочисленном векторе vectorn найти первый по порядку отрицательный и последний положительный элементы и поменять их местами. Предусмотреть случай, когда все элементы вектора одного знака.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 3 1 -5 -2 5 2 0 10 -1
Выходные данные:
first_otr=-5 n_first_otr=4
last_pol=10 n_last_pol=9
Выходной вектор:
7 3 1 10 -2 5 2 0 -5 -1
Задание 2
В заданном k-ом слое элементов целочисленного прямоугольного массива matrixnm сдвинуть все элементы на p шагов по часовой стрелке. Номер слоя k и количество шагов p задать с консоли.
Входные данные для n=4, m=5, k=2, p=2:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
Выходной массив:
7 -2 -11 3 -5
5 -12 9 2 1
-15 8 10 0 -18
0 -10 9 -13 4
Вариант 8
Задание 1
В целочисленном векторе vectorn найти второй по порядку отрицательный и предпоследний положительный элементы и поменять их местами. Предусмотреть случай, когда таких элементов в векторе нет.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 3 1 -5 -2 5 2 0 10 9
Выходные данные:
second_otr=-2 n_second_otr=5
predp_pol=10 n_predp_pol=9
Выходной вектор:
7 3 1 -5 10 5 2 0 -2 9
Задание 2
В целочисленном массиве matrixnn найти максимальный элемент выше главной диагонали и минимальный – ниже ее. Поменять их местами.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные:
max=10 i_max=2 j_max=4
min=-17 i_min=5 j_min=2
Выходной массив:
7 -2 -11 3 -5
5 2 0 -17 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 10 2 4 -19
Вариант 9
Задание 1
В целочисленном векторе vectorn переместить в начало все положительные элементы в порядке их следования, за ними – все отрицательные элементы в порядке их следования, а затем - нули.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходной вектор:
7 1 5 2 9 -5 -2 -1 0 0
Задание 2
В целочисленном массиве matrixnn найти максимальный элемент выше побочной диагонали и минимальный – ниже ее. Поменять их местами.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные:
max=9 i_max=3 j_max=2
min=-19 i_min=5 j_min=5
Выходной массив:
7 -2 -11 3 -5
5 2 0 -17 1
-15 -19 -12 8 -18
0 -10 9 -13 4
-1 10 2 4 9
Вариант 10
Задание 1
В целочисленном векторе vectorn переместить в начало все нулевые элементы, за ними – все отрицательные элементы в порядке их следования, а за ними – все положительные элементы в порядке их следования.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходной вектор:
0 0 -5 -2 -1 7 1 5 2 9
Задание 2
Целочисленный массив matrixnn сначала транспонировать, а затем его элементы отразить зеркально относительно побочной диагонали. Вывести на экран исходный массив, транспонированный и выходной.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные:
Транспонированный массив:
7 5 -15 0 -1
-2 2 9 -10 -17
-11 0 -12 9 2
3 10 8 -13 4
-5 1 -18 4 -19
Выходной массив:
-19 4 2 -17 -1
4 -13 9 -10 0
-18 8 -12 9 -15
1 10 0 2 5
-5 3 -11 -2 7
Вариант 11
Задание 1
В целочисленном векторе vectorn вычислить сумму нечетных элементов с четными индексами и сумму четных элементов с нечетными индексами. Предусмотреть случай, когда таких элементов нет.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходные данные:
s_nechet=9
s_chet=0
Задание 2
В целочисленном прямоугольном массиве matrixnm найти все элементы, соприкасающиеся углами с его максимальным элементом.
Входные данные для n=4, m=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
Выходные данные
max=10 row_max=2 col_max=4
Найденные элементы:
-11 -5 -12 -18
Вариант 12
Задание 1
В целочисленном векторе vectorn определить среднее арифметическое положительных и отдельно среднее арифметическое отрицательных элементов вектора, расположенных между минимальным и максимальным его элементами. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходные данные:
max=9 n_max=10
min=-5 n_min=4
sr_arifm_otr=-1.50
sr_arifm_pol= 3.50
Задание 2
В целочисленном прямоугольном массиве matrixnm найти наименьший элемент, встречающийся более одного раза. Предусмотреть случай, когда такого элемента нет.
Входные данные для n=5, m=6:
v_min=-20
v_max=10
Исходный массив:
7 -2 -18 3 -5 8
5 2 0 10 1 -2
-15 9 -12 8 -18 9
0 -10 9 -13 4 -16
-1 -17 10 4 -18 -9
Выходные данные:
min=-18 count_min=3
Вариант 13
Задание 1
В целочисленном векторе vectorn определить среднее арифметическое положительных и отдельно среднее арифметическое отрицательных элементов вектора, расположенных между вторыми по значению минимальным и максимальным его элементами. Предусмотреть случай, когда таких элементов нет.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходные данные:
max_2=7 n_max_2=1
min_2=-2 n_min_2=5
sr_arifm_otr=-5.00
sr_arifm_pol= 1.00
Задание 2
В целочисленном прямоугольном массиве matrixnm найти наибольший элемент, встречающийся более одного раза. Предусмотреть случай, когда такого элемента нет.
Входные данные для n=5, m=6:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5 8
5 2 0 10 1 -2
-15 9 -12 8 -18 9
0 -10 9 -13 4 -16
-1 -17 10 4 -19 -9
Выходные данные:
max=10 n_max=2
Вариант 14
Задание 1
В целочисленном векторе vectorn определить количество положительных, отрицательных и нулевых элементов, расположенных между минимальным и максимальным его элементами. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходные данные:
min=-5 n_min=4
max=9 n_max=10
count_otr=2
count_pol=2
count_null=1
Задание 2
В целочисленном прямоугольном массиве matrixnm найти все элементы, соприкасающиеся углами с его минимальным элементом.
Входные данные для n=4, m=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
Выходные данные
min=-18 row_min=3 col_min=5
Найденные элементы:
10 -13
Вариант 15
Задание 1
В целочисленном векторе vectorn определить количество положительных, отрицательных и нулевых элементов, расположенных между вторыми по значению минимальным и максимальным его элементами. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой).
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 0 -1 9
Выходные данные:
max_2=7 n_max_2=1
min_2=-2 n_min_2=5
count_otr=1
count_pol=1
count_null=1
Задание 2
Переставить строки и столбцы целочисленного прямоугольного массива matrixnm таким образом, чтобы его максимальный элемент находился в левом верхнем углу, а минимальный – в правом нижнем. Предусмотреть вариант, когда максимальный и минимальный элементы находятся в одной строке или в одном столбце. В этом случае выдать сообщение “Перестановка невозможна”. Перестановки строк и столбцов вывести по шагам.
Входные данные для n=4, m=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
Выходные данные:
max= 10 row_max=2 col_max=4
min=-18 row_min=3 col_min=5
Первая перестановка:
10 2 0 5 1
3 -2 -11 7 -5
8 9 -12 -15 -18
-13 -10 9 0 4
Вторая перестановка:
10 2 0 5 1
3 -2 -11 7 -5
-13 -10 9 0 4
8 9 -12 -15 -18
Вариант 16
Задание 1
В целочисленном векторе vectorn найти второй по порядку положительный и предпоследний отрицательный элемент. Предусмотреть случай, когда таких элементов нет. Элементы, расположенные между ними, отсортировать по возрастанию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 5 2 -3 -1 9
Выходные данные:
pol_2=1 n_pol_2=3
otr_predp=-3 n_otr_predp=8
Выходной вектор:
7 0 1 -5 -2 2 5 -3 -1 9
Задание 2
В квадратном массиве matrixnn (n – нечетное) повернуть средний наибольший ромб элементов на 90 градусов по часовой стрелке.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
7 -2 -15 3 -5
5 -10 9 2 1
2 9 -12 0 -11
0 -13 8 10 4
-1 -17 -18 4 -19
Вариант 17
Задание 1
В целочисленном векторе vectorn найти второй по порядку четный и предпоследний нечетный элементы. Предусмотреть случай, когда таких элементов нет. Элементы, расположенные между ними, отсортировать по убыванию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 2 5 -3 -1 9
Выходные данные:
chet_2=-2 n_chet_2=5
nechet_predp=-1 n_nechet_predp=9
Выходной вектор:
7 0 1 -5 -2 5 2 -3 -1 9
Задание 2
В квадратном массиве matrixnn (n – нечетное) повернуть средний наибольший ромб элементов на 90 градусов против часовой стрелки.
Входные данные для n=5:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные
Выходной массив:
7 -2 -18 3 -5
5 10 8 -13 1
-11 0 -12 9 2
0 2 9 -10 4
-1 -17 -15 4 -19
Вариант 18
Задание 1
В целочисленном векторе vectorn найти два элемента, наиболее близкие к среднему арифметическому всех элементов массива. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Элементы, расположенные между ними, отсортировать по возрастанию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 1 -1 -5 -2 2 5 -3 0 9
Выходные данные:
sr_arifm=1.30
bliz_1=1 n_bliz_1=2
bliz_2=2 n_bliz_2=6
Выходной вектор:
7 1 -5 -2 -1 2 5 -3 0 9
Задание 2
В квадратном массиве matrixnn (n – нечетное) повернуть k-ый слой среднего наибольшего ромба элементов на 90 градусов по часовой стрелке. Номер слоя k задать с консоли.
Входные данные для n=5, k=1:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходной массив:
7 -2 -15 3 -5
5 -10 0 2 1
2 9 -12 8 -11
0 -13 9 10 4
-1 -17 -18 4 -19
Вариант 19
Задание 1
В целочисленном векторе vectorn найти второй по порядку нечетный и предпоследний четный элементы. Предусмотреть случай, когда таких элементов нет (все элементы вектора равны между собой). Элементы, расположенные между ними, отсортировать по возрастанию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 5 -2 2 5 -4 -1 9
Выходные данные:
nechet_2=1 n_nechet_2=3
chet_predp=2 n_chet_predp=6
Выходной вектор:
7 0 1 -2 5 2 5 -4 -1 9
Задание 2
В квадратном массиве matrixnn (n – нечетное) повернуть k-ый слой среднего наибольшего ромба элементов на 90 градусов против часовой стрелки. Номер слоя k задать с консоли.
Входные данные для n=5, k=1:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные:
Выходной массив:
7 -2 -18 3 -5
5 10 0 -13 1
-11 9 -12 8 2
0 2 9 -10 4
-1 -17 -15 4 -19
Вариант 20
Задание 1
В целочисленном векторе vectorn найти второй по порядку отрицательный и предпоследний положительный элемент. Предусмотреть случай, когда таких элементов нет. Элементы, расположенные между ними, отсортировать по убыванию.
Входные данные:
n=10
v_min=-5
v_max=10
Исходный вектор:
7 0 1 -5 -2 2 5 -3 1 9
Выходные данные:
otr_2=-2 n_otr_2=5
pol_predp=1 n_pol_predp=9
Выходной вектор:
7 0 1 -5 -2 5 2 -3 1 9
Задание 2
В квадратном массиве matrixnn (n – нечетное) определить минимальный и максимальный элементы в k-ом слое среднего наибольшего ромба элементов. Номер слоя k задать с консоли.
Входные данные для n=5, k=1:
v_min=-20
v_max=10
Исходный массив:
7 -2 -11 3 -5
5 2 0 10 1
-15 9 -12 8 -18
0 -10 9 -13 4
-1 -17 2 4 -19
Выходные данные:
max=10 row_max=2 col_max=4
min=-18 row_min=3 col_min=5
Лабораторная работа № 7
Подпрограммы
Тема: Создание программ, использующих пользовательские подпрограммы-функции (процедуры).
Цель работы: Освоить создание и работу с подпрограммами-функциями и процедурами. Освоить методы тестирования программ.
Задание на лабораторную работу
- Получить задание в соответствии с номером своего варианта.
- Составить схему алгоритма решения задачи.
- Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
- Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования
- в нормальных условиях,
- при граничных условиях,
- при некорректных входных данных,
- по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,
- по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.
- Получить результат.
- Оформить отчет по лабораторной работе.
Пример оформления работы
Задание 1.
1. Создать функцию, определяющую сумму максимальных элементов главной и побочной диагоналей массива massivnn.
Перед началом поиска максимального элемента max_1 главной диагонали массива принимаем за него элемент massiv11. После этого сравниваем остальные элементы главной диагонали massivii (i=2,…,n) с текущим максимумом: если очередной элемент больше текущего максимума max_1, то сейчас он – текущий максимум.
Перед началом поиска максимального элемента max_2 побочной диагонали массива принимаем за него элемент massivnn. После этого сравниваем остальные элементы побочной диагонали massivij (i=2,…,n; j=n-i+1) с текущим максимумом: если очередной элемент больше текущего максимума max_2, то сейчас он – текущий максимум.
2. Схема алгоритма решения задачи.
2.1. Головная программа:
2.2. Подпрограмма-функция:
3. Код программы
3.1. На языке Паскаль:
Program Variant_0;
Uses WinCrt;
Const n = 5; {задание размера массива именованной константой}
Type TMass=Array [1..n, 1..n] Of Integer;{описание нового типа}
Var i, j : Word;
summa, v_min, v_max: Integer;
massiv : TMass;
Function Summa_max(nn:Integer; AA:TMass):Integer;
Var i, max_1, max_2: Integer;
Begin
max_1:=AA[1,1];
For i:=2 To nn Do
If (AA[i,i]>max_1)
Then max_1:=AA[i,i];
max_2:=AA[1,nn];
For i:=2 To nn Do
If (AA[i,nn-i+1]>max_2)
Then max_2:=AA[i,nn-i+1];
Summa_max:=max_1+max_2;
End; {функции Summa_max}
Begin {головной программы}
Randomize; {запуск генератора случайных чисел}
WriteLn('Лабораторная работа №7_1');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
WriteLn('Задайте диапазон случайных чисел');
Write('v_min=');
ReadLn(v_min);
Write('v_max=');
ReadLn(v_max);
For i:=1 To n Do {заполнение массива случайными числами}
For j:=1 To n Do
massiv[i,j]:=Random(v_max-v_min + 1) + v_min;
WriteLn;
WriteLn('Исходный массив:');
For i:=1 To n Do {вывод на экран исходного массива}
Begin
For j:=1 To n Do
Write(massiv[i,j]:5);
WriteLn;
End;
WriteLn;
summa:=Summa_max(n, massiv);
WriteLn('Сумма максимальных элементов диагоналей:', summa);
End.
3.5. На языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>
// прототипы функций
void vorm_mass(int nn, int mass_max, int mass_min, int mass[nn][nn]);
int summa_max(int nn, int mass[nn][nn]);
Int main()
{
int i, j, n, massiv_min, massiv_max, summa;
printf("\nЛабораторная работа №7_1");
printf("\nВариант №0");
printf("\nПО-11-1");
printf("\nПупкин Василий\n");
printf("\nВведите нижнюю границу диапазона:");
scanf("%d", &massiv_min);
printf("\nВведите верхнюю границу диапазона:");
scanf("%d", &massiv_max);
printf("\nВведите размер массива:");
scanf("%d", &n);
int massiv[n][n];
printf("\nИсходный массив:\n");
vorm_mass(n, massiv_max, massiv_min, massiv);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%5d", massiv[i][j]);
printf("\n");
}
printf("\n");
summa = summa_max(n, massiv);
printf("\nСумма максимальных элементов диагоналей: %d", summa);
return 0;
}
//описание функций
// 1. формирование массива
void vorm_mass(int nn, int mass_max, int mass_min, int mass[nn][nn])
{
int i, j, m;
time_t t; // текущее время для инициализации
// ге