Способ. Линейная сортировка.

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.

Составим блок-схему к задаче.