Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы - Паскаль.doc
Скачиваний:
12
Добавлен:
04.11.2018
Размер:
4.84 Mб
Скачать

Вариант 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. Осуществить компиляцию, отладку и тестирование программы.

  5. Получить результат.

  6. Оформить отчет по лабораторной работе.

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

Задание 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. Код программы:

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[nn,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.

4. Компиляция, отладка, тестирование и получение результата: