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. Компиляция, отладка, тестирование и получение результата:

String input, text; // строк класса String - student2.ru

Задания на лабораторную работу №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

Подпрограммы

Тема: Создание программ, использующих пользовательские подпрограммы-функции (процедуры).

Цель работы: Освоить создание и работу с подпрограммами-функциями и процедурами. Освоить методы тестирования программ.

Задание на лабораторную работу

  1. Получить задание в соответствии с номером своего варианта.
  2. Составить схему алгоритма решения задачи.
  3. Написать код программы на языке Паскаль в среде Borland Pascal for Windows.
  4. Осуществить компиляцию, и отладку программы. Провести структурное тестирование программы (тестирование как белого ящика): составить тестовые наборы для тестирования

- в нормальных условиях,

- при граничных условиях,

- при некорректных входных данных,

- по критерию покрытия решений – результат проверки каждого условия принимал значение истина или ложь хотя бы один раз,

- по критерию покрытия условий – все возможные результаты каждой логической операции в условиях были получены хотя бы по одному разу.

  1. Получить результат.
  2. Оформить отчет по лабораторной работе.

Пример оформления работы

Задание 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. Головная программа:

String input, text; // строк класса String - student2.ru

2.2. Подпрограмма-функция:

String input, text; // строк класса String - student2.ru

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; // текущее время для инициализации

// ге

Наши рекомендации