Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5 ТКС-12б (преобразование...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
715.78 Кб
Скачать

1.2 Пример составления алгоритма и программы на языке Pascal для преобразования одномерного массива.

Задание: Дан массив действительных чисел F1,...,F40. Упорядочить в нем по возрастанию элементы, которые находятся между максимальным и минимальным элементами.

Решение.

Описание массива выполним в разделе описания типов Type.

Для работы с массивом F сначала необходимо сформировать его элементы. Выполним формирование элементов массива с помощью генератора случайных чисел random. Для обозначения размерности массива F введем переменную N. В цикле сразу после формирования элемента массива выполним вывод его на экран.

Далее в одном цикле выполним поиск максимального и минимального элементов массива Fmax и Fmin и их номеров nmax и nmin. Затем определим, какой из номеров меньше: nmax или nmin, меньший из номеров запомним в переменной k1, больший – в переменной k2. После этого упорядочим по возрастанию элементы от k1 до k2 по аналогии с сортировкой элементов массива от 1-го до N-го. При упорядочении элементов массива необходимо организовать 2 цикла. Внешний цикл всегда организовывается, начиная с 1 и выполняется число раз, на единицу меньшее количества сортируемых элементов (в случае сортировки всего массива из N элементов внешний цикл организовывался от 1 до N – 1). В данном случае необходимо упорядочить (k2 – k1 + 1) элементов. Поэтому внешний цикл необходимо организовать от 1 до k2k1. В качестве переменной внешнего цикла будем использовать переменную i. Поскольку необходимо упорядочить элементы с номерами от k1 до k2, внутренний цикл организуем, начиная с k1 до k2 i (в случае сортировки всего массива из N элементов внутренний цикл организовывался от 1 до N – i). В качестве переменной внутреннего цикла будем использовать переменную j.

После упорядочения преобразованный массив F выведем на экран.

1.2.1 Блок-схема алгоритма решения данной задачи выглядит следующим образом:

1.2.2 Текст программы на языке Pascal выглядит следующим образом:

Program primer5;

uses crt;

type

mas=array[1..50] of real;

var

F:mas;

i,j,k1,k2,nmin,nmax,N:byte;

Fmax,Fmin,P:real;

Begin

clrscr;

randomize;

N:=40;

writeln('Исходный массив:');

for i:=1 to N do

begin

F[i]:=100*random-50;

write(F[i]:8:2);

end;

Fmax:=-10000;

Fmin:=10000;

for i:=1 to N do

begin

if F[i]>Fmax

then begin

Fmax:= F[i];

nmax:=i;

end;

if F[i]<Fmin

then begin

Fmin:= F[i];

nmin:=i;

end;

end;

writeln;

writeln('Максимальный элемент:',Fmax:8:2,' номер ',nmax);

writeln('Минимальный элемент: ',Fmin:8:2,' номер ',nmin);

if nmax>nmin

then begin

k1:=nmin;

k2:=nmax;

end

else begin

k2:=nmin;

k1:=nmax;

end;

for i:=1 to k2-k1 do

begin

for j:=k1 to k2-i do

begin

if F[j]>F[j+1]

then begin

P:=F[j];

F[j]:=F[j+1];

F[j+1]:=P;

end;

end;

end;

writeln('Результат: ');

for i:=1 to N do write(F[i]:8:2);

readkey;

end.

1.2.3 Результаты работы программы:

Исходный массив:

38.58 -8.06 14.82 -12.39 -40.87 -41.47 8.26 -36.21 17.87 4.88

21.06 22.32 29.95 -3.65 3.11 3.20 23.43 -11.80 -19.23 -36.35

-13.84 3.93 -32.65 24.02 -35.59 -28.07 -34.98 -28.65 49.04 0.10

-43.29 12.50 10.17 -6.84 11.41 -5.75 -33.61 42.30 -48.80 32.50

Максимальный элемент: 49.04 номер 29

Минимальный элемент: -48.80 номер 39

Результат:

38.58 -8.06 14.82 -12.39 -40.87 -41.47 8.26 -36.21 17.87 4.88

21.06 22.32 29.95 -3.65 3.11 3.20 23.43 -11.80 -19.23 -36.35

-13.84 3.93 -32.65 24.02 -35.59 -28.07 -34.98 -28.65 -48.80 -43.29

-33.61 -6.84 -5.75 0.10 10.17 11.41 12.50 42.30 49.04 32.50

Из результатов работы программы видно, что в преобразованном массиве элементы, начиная с 29 по 39, упорядочены по возрастанию.