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

3.4. Задание 4.

Составить с объяснениями блок-схему и циклическую программу на языке Паскаль решения задачи с использованием одномерных массивов.

Задан массив вещественных чисел Аi(i=1,N) из N элементов (М<20). Найти минимальный и максимальный элементы массива и поменять их местами. В качестве результата вывести исходный массив, максимальный и минимальный элементы и полученный массив. В программе использовать подпрограммы.

Рассмотрим алгоритм решения. Исходными данными к задаче является одномерный массив вещественных чисел Аi длиной N. Необходимо:

1. Ввести значение элементов массива. Для этого необходимо организовать цикл со счётчиком. Параметром цикла служит переменная i. Ввод значений Аi повторяется до тех пор, пока i остаётся не больше заданной величены N.

2. Распечатать исходный массив Аi.

3. Найти максимальный элемент массива Аi. Для этого сначала принять за максимальный элемент первый элемент массива и организовать цикл со счетчиком. Сравнивать каждый текущий элемент с принятым значением максимального, принимая за максимальный элемент больший из них. Одновременно фиксировать индекс максимального элемента.

4. Найти минимальный элемент массива и его индекс (аналогично поиску максимального элемента).

5. Поменять местами максимальный и минимальный элементы, используя значения их индексов.

6. Распечатать полученный массив.

Для выполнения п. 1,2.3,4, составим подпрограммы.

Блок-схема процедуры VVOD:

Блок-схема процедуры VYVOD:

Блок-схема процедуры MINEL:

Блок-схема процедуры MAXEL:

Блок-схема основной программы:

1) При разработке подпрограмм следует использовать формальные параметры. Так, в процедуре VVOD и VYVOD формальными являются параметры N1 и V, в процедурах МАХЕL и МINEL - параметры N1, V, М, К. При обращении к процедурам, вместо формальных параметров, должны использоваться фактические, т.е. те, которые описываются в разделе описания переменных (VAR) разрабатываемой программы. Это позволяет использовать разработанные подпрограммы не только в одной какой-либо программе, но и при решении других задач, где необходимо выполнять аналогичные действия, стоит только при обращении к подпрограмме указать фактические параметры для решаемой задачи.

Так, например, в процедуре VVOD в качестве формальных параметров указаны длина массива N1 и имя массива - V. Указывая при обращении к этой процедуре фактическую длину массива и фактическое имя массива (в данном случае N и А), можно вводить массивы разной длины и имени. Аналогично описаны параметры и в процедурах VYVOD, МАХЕL, МIМЕL.

  1. На основании сказанного выше приведем программу решения задачи 4:

PROGRAM MAS1;

USES {УКАЗАНИЕ БИБЛИОТЕЧНЫХ МОДУЛЕЙ }

CRT;

TYPE MAS=ARRAY[1..20] OF REAL;

VAR { РАЗДЕЛ ОПИСАНИЯ ПЕРЕМЕННЫХ}

A:MAS;

MAX,MIN:REAL;

I,N,N_MAX,N_MIN:INTEGER;

{****************************************************************}

{ ПРОЦЕДУРА ВВОДА ЭЛЕМЕНТОВ МАССИВА}

PROCEDURE VVOD(N1:INTEGER;VAR V:MAS);

VAR I:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

BEGIN

WRITELN('BBEДИТЕ',I,' ЭЛЕМЕНТ МАССИВА');

READLN(V[I]);

END;

END;

{ПРОЦЕДУРА ВЫВОДА ЭЛЕМЕНТОВ МАССИВА }

PROCEDURE VYVOD(N1:INTEGER;V:MAS);

VAR I:INTEGER;

BEGIN

FOR I:=1 TO N1 DO

WRITE(V[I]:5:2,' ':2);

WRITELN;

END;

{*************************************************************}

{ПРОЦЕДУРА ПОИСКА МАКСИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА}

PROCEDURE MAXEL(N1:INTEGER;V:MAS;VAR M:REAL;VAR K:INTEGER);

VAR I:INTEGER;

BEGIN

M:=V[1];

K:=1;

FOR I:=2 TO N1 DO

IF V[I]>M THEN

BEGIN

M:=V[I];K:=I;

END;

END;

{*************************************************************}

{ПРОЦЕДУРА ПОИСКА МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА}

PROCEDURE MINEL(N1:INTEGER;V:MAS;VAR M:REAL;VAR K:INTEGER);

VAR I:INTEGER;

BEGIN

M:=V[1];

K:=1;

FOR I:=2 TO N1 DO

IF V[I]<M THEN

BEGIN

M:=V[I];

K:=I;

END;

END;

BEGIN { НАЧАЛО РАЗДЕЛА ОПЕРАТОРОВ }

CLRSCR;

GOTOXY(20,4);

WRITELN('BBEДИTE ДЛИНУ МАССИВА А - N');

READLN(N);

GOTOXY(20,6);

WRITELN('BBEДИTE МАССИВ А');

VVOD(N,A);

{ ВЫВОД ИСХОДНОГО МАССИВА А НА ДИСПЛЕЙ }

CLRSCR;

GOTOXY(20,4);

WRITELN('ИСХОДНЫЙ МАССИВ А:');

GOTOXY(5,5);

VYVOD(N,A);

WRITELN;

{ ОПРЕДЕЛЕНИЕ МАКСИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА И ЕГО ИНДЕКСА }

MAXEL(N,A,MAX,N_MAX);

{ОПРЕДЕЛЕНИЕ МИНИМАЛЬНОГО ЭЛЕМЕНТА МАССИВА И ЕГО ИНДЕКСА }

MINEL(N,A,MIN,N_MIN);

{ ПЕРЕСТАНОВКА ЭЛЕМЕНТОВ }

A[N_MAX]:=MIN;

A[N_MIN]:=MAX;

{ВЫВОД РЕЗУЛЬТАТОВ НА ДИСПЛЕЙ }

GOTOXY(20,8);

WRITELN('МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ МАССИВА A=',MAX:4:1);

GOTOXY(20,9);

WRITELN('EГO НОМЕР В МАССИВЕ ',N_MAX:2);

GOTOXY(20,12);

WRITELN('МИНИМАЛЬНЫЙ ЭЛЕМЕНТ МАССИВА A=',MIN:4:1);

GOTOXY(20,13);

WRITELN('EГO НОМЕР В МАССИВЕ',N_MIN:2);

GOTOXY(20,16);

WRITELN('MACCИB А ПОСЛЕ ПЕРЕСТАНОВКИ ЭЛЕМЕНТОВ:');

GOTOXY(5,20);

VYVOD(N,A);

READKEY;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]