Способ. Линейная сортировка.
Begin
Begin
Begin
Begin
Вывод элементов массива.
Begin
Writeln (‘ Введите’, I , ‘ элемент массива А’);
Readln ( A [ I ] ) ;
End ;
Блок-схема ввода элементов массива:
Пусть дан тот же массив с теми же характеристиками, тогда вывод элементов организован следующим образом:
For I := 1 to N do
Writeln ( ‘ A [ ‘, I , ‘] = ‘, A [ I ] :8:2 ) ;
(илиwrite ( A [ I ] :8:2 ); )
End ;
Блок-схема вывода элементов массива:
3. Обработка массива – это основная часть программы, т.е. решение самой задачи, так же организуется с помощью оператора цикла FOR. Все задачи с массивами можно разделить на группы:
А) нахождение суммы элементов массива;
Б) нахождение произведения элементов массива;
В) поиск минимального или максимального элементов массива;
Г) сортировка массивов (по возрастанию или по убыванию).
После объявления массива каждый его элемент можно обработать, указав имя массива, а за ним – индекс элемента в квадратных скобках. Индексированные элементы массива называются индексированными переменными и могут использоваться так же, как и простые переменные. Например, они могут входить в выражения в качестве операндов, использоваться в операторах, им можно присваивать любые значения, соответствующие их типу.
Рассмотрим пример формирования массива несколькими способами.
Задача. Создать программу, которая формирует одномерный массив тремя способами (по формуле А[i]=sin(i), случайным образом В[i], ввод элементов с клавиатуры C[i]) и выводит полученный в каждом случае массив на экран.
Решение: в начале программы опишем переменные, массивы A, B, C из вещественных чисел, индекс I, количество элементов N. Основная часть программы будет состоять из трех отдельных частей, каждая из которых иллюстрирует разный способ формирования одномерного массива.
Program massiv;
Uses Crt ;
Var a, b, c : array [1..20] of real ;
I, n : integer ;
Begin
ClrScr ;
Writeln (‘Введите количество элементов массива’);
Readln ( n ) ;
for I := 1 to n do {первый способ формирование массива по формуле}
a [ I ] := sin ( I ) ;
end ;
for I := 1 to n do {второй способ – случайным образом}
b [ I ] := Random ( I ) ;
end ;
for I := 1 to n do {третий способ – путем ввода данных с клавиатуры}
writeln ( ‘ Введите ‘, I , ‘ элемент массива С ‘ ) ;
readln ( c [ I ] ) ;
end :
Writeln ( ‘ Вывод массива А’ ) ;
For I := 1 to n do
Write ( a [ I ] :8:2 ) ;
Writeln ( ‘ Вывод массива В ’ ) ;
For I := 1 to n do
Write ( b [ I ] :8:2 ) ;
Writeln ( ‘ Вывод массива С ’ ) ;
For I := 1 to n do
Write ( c [ I ] ) ;
Readln
End.
Блок-схема к задаче:
Вопрос 3.
1) Рассмотрим первую стандартную программу – нахождение суммы элементов массива.
Program summa;
Type t=array [1..50] of real;
Var x: t;
i, n: integer; s: real;
Begin
writeln (‘Введите количество элементов массива’);
readln ( n );
for i:=1 to n do begin
writeln (‘Введите ‘, i ,’элемент массива X’);
readln (x [ i ]);
end;
s:=0;
for i:=1 to n do begin
s:=s + x [ i ];
end;
writeln (‘Вывод массива’);
for i:=1 to n do begin
write (x [ i ]:8:2);
end;
writeln (‘ сумма элементов равна ’, s:8:2);
readln
End.
Составим блок – схему к этой программе
2) Рассмотрим вторую стандартную задачу – нахождение произведения элементов массива.
Program proizvedenie;
Type t=array [1..50] of real;
Var x: t;
i, n: integer; p: real;
Begin
writeln (‘Введите количество элементов массива’);
readln ( n );
for i:=1 to n do begin
writeln (‘Введите ‘, i ,’элемент массива X’);
readln (x [ i ]);
end;
p:=1;
for i:=1 to n do begin
p:=p * x [ i ];
end;
writeln (‘Вывод массива’);
for i:=1 to n do begin
write (x [ i ]:8:2);
end;
writeln (‘произведение элементов равно ’, p:8:2);
readln
End.
Составим блок-схему к этой задаче
3) Рассмотрим третью стандартную задачу – нахождение наибольшего (наименьшего) элемента массива.
Program maxsimum;
Type t=array [1..50] of real;
Var x: t;
i, n: integer; max: real;
Begin
writeln (‘Введите количество элементов массива’);
readln ( n );
for i:=1 to n do begin
writeln (‘Введите ‘, i ,’элемент массива X’);
readln (x [ i ]);
end;
max:=x [ 1];
for i:=1 to n do begin
if x [ i ] >= max then max := x [ i ] ;
end;
writeln (‘Вывод массива’);
for i:=1 to n do begin
write (x [ i ]:8:2);
end;
writeln (‘ наибольший элемент массива ’, max:8:2);
readln
End.
Составим блок-схему к этой задаче.
Вопрос 4.
Сортировка – одна из наиболее распространенных операций обработки массивов данных. Сортировкой называется распределение элементов множества по группам в соответствии с определенными правилами.
Задача. Создадим программу, которая выводит на экран несортированный массив чисел, затем выполняет его сортировку по возрастанию и выводит на экран отсортированный массив.
Идея линейной сортировки по возрастанию заключается в том, чтобы последовательно просматривая весь массив, найти наименьший элемент и поместить его на первую позицию, обменяв его с элементом который ранее занимал первую позицию.
Решение. Введем в раздел описания следующие переменные I – для указания позиции первого элемента в рассматриваемой части массива; K – для указания позиции очередного сравниваемого с ним элемента; С – для временного хранения значения при обмене. Полный текст программы сортировки по возрастанию. (Вложенные циклы – если телом цикла является циклическая структура, то такие циклы называются вложенными).
Program poriadok;
Type t=array [1..50] of real;
Var x: t;
i, n, k: integer; c: real;
Begin
writeln (‘Введите количество элементов массива’);
readln ( n );
for i:=1 to n do begin
writeln (‘Введите ‘, i ,’элемент массива X’);
readln (x [ i ]); end;
for i:=1 to n-1do
for k:=i+1 to n do
if x[ i ] > x[ k ] then begin
c:= x[ i ];
x[ i ]:= x[ k ];
x[ k ]:= c;
end;
writeln (‘Вывод нового массива’);
for i:=1 to n do begin
write (x [ i ]:8:2); end;
readln
End.
Составим блок-схему к задаче.