Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмы_массивы

.doc
Скачиваний:
15
Добавлен:
28.03.2015
Размер:
72.7 Кб
Скачать

Алгоритмы формирования

одномерных массивов

двумерных массивов

1

{Поэлементный ввод с клавиатуры a[1..n]}

writeln('введите элементы массива');

for i:=1 to n do readln(a[i]);

{Поэлементный ввод с клавиатуры a[1.. m,1..n]}

for i:=1 to m do

for j:=1 to n do readln(a[i,j]);

2

{Генерация случайных чисел}

randomize;

for i:=1 to n do

a[i]:=random(10);

{ Генерация случайных чисел}

randomize;

for i:=1 to m do

for j:=1 to n do a[i,j]:=random(10);

3

{Задание по формуле}

for i:=1 to n do

a[i]:= i*i;

{Задание по формуле}

for i:=1 to m do

for j:=1 to n do a[i,j]:= i+j;

Алгоритмы вывода

одномерных массивов

Двумерных массивов

1

{Вывод в строку}

for i:=1 to n do

write(a[i]:5);

{Вывод таблицей}

for i:=1 to m do

begin

for j:=1 to n do write(a[i,j]:5);{вывод i-строки}

writeln;

end;

Алгоритмы обработки

одномерных массивов

двумерных массивов

1

{Суммирование элементов}

s:=0;

for i:=1 to n do

s:=s+b[i];

{Суммирование элементов}

s:=0;

for i:=1 to m do

for j:=1 to n do s:=s+b[i,j];

2

{ Произведение элементов больших заданного числа T}

p:=1;

for i:=1 to n do

if a[i]>T then p:=p*a[i];

{Суммирование элементов данной строки k}

s:=0;

for j:=1 to n do s:=s+a[k,j];

3

{Количество элементов равных заданному числу T}

k:=0;

for i:=1 to n do

if a[i]=T then k:=k+1;

{Произведение элементов данного столбца l}

p:=1;

for i:=1 to n do p:=p*a[i,l];

4

{Перестановка двух рядом стоящих элементов}

for i:=2 to n do

begin

p:=m[i-1];

m[i-1]:=m[i];

m[i]:=p

end;

{Перестановка элементов двух строк k и l}

for j:=1 to n do

begin

p:=a[k,j];

a[k,j]:=a[l,j];

a[l,j]:=p

end;

5

{Циклический сдвиг}

for i:=1 to m do

begin

p:=a[n];

for j:=n downto 2 do

a[j]:=a[j-1];

a[1]:=p

end;

{Транспонирование матрицы}

for i:=1 to m do

for j:=1 to i do

begin

p:=a[i,j];

a[i,j]:=a[j,i];

a[j,i]:=p

end;

6

{Объединение двух однотипных массивов}

for i:=1 to m do

begin

c[2*i-1]:=a[i];

c[2*i]:=b[i]

end;

{Подсчет количества четных элементов}

k:=0;

for i:=1 to m do

for j:=1 to n do

if a[i,j] mod 2= 0 then k:=k+1;

7

{Формирование массива b из элементов массива a, больших заданного числа Т}

j:=0;

for i:=1 to m do

if a[i]>T then begin j:=j+1;

b[j]:=a[i]

end;

{Формирование одномерного массива из сумм элементов по строкам}

for i:=1 to m do

begin

s:=0;

for j:=1 to n do

s:=s+b[i,j];

s[i]:=s

end;

Алгоритмы вставки, удаления элементов

для одномерных массивов

для двумерных массивов

1

{Удаление k-го элемента массива}

for i:=k to m-1 do

a[i]:=a[i-1];

{Удаление k-ой строки массива}

for i:=k to m-1 do

for j:=1 to n do a[i,j]:=a[i+1,j];

2

{Вставка элемента b на k-е место массива}

for i:=n downto k do a[i+1]:=a[i];

a[k]:=b;

{Вставка k-го столбца в массив}

for j:=n downto k do

for i:=1 to m do a[i,j+1]:=a[i,j];

for i:=1 to m do a[i,k]:=b[i];

3

{Вставка элемента c в упорядоченный массив}

for i:=1 to m do

if c>=a[i] then

begin

for j:=m downto i do a[i+1]:=a[i];

a[i]:=c;

break;

end;

{Удаление l-го столбца из массива}

for i:=1 to m do

for j:=l to n-1 do a[i,j]:=a[i,j+1];

Алгоритмы поиска максимального и минимального элементов

для одномерных массивов

для двумерных массивов

1

{Поиск минимального элемента}

m:=a[1]; k:=1;

for i:=2 to m do

if a[i]<m then begin

m:=a[i];

k:=i

end;

{Поиск минимального элемента}

m:=a[1,1]; k:=1; l:=1;

for i:=1 to m do

for j:=1 to n do

if a[i,j]<m then begin

m:=a[i,j];

k:=i; l:=j;

end;

2

{Поиск максимального элемента}

m:=a[1]; k:=1;

for i:=2 to m do

if a[i]>m then begin

m:=a[i];

k:=i;

end;

{Поиск максимального элемента k-том столбце}

m:=a[1,k]; l:=1;

for i:=1 to m do

if a[i,k]>m then begin

m:=a[i,k];

l:=i;

end;

3

{Поменять местами максимальный и минимальный элементы массива}

m1:=a[1]; k:=1; m2:=a[1]; l:=1;

for i:=2 to m do

begin

if a[i]>m1 then begin

m1:=a[i]; k:=i;

end;

if a[i]<m2 then begin

m2:=a[i];l:=i

end;

end;

p:=a[k]; a[k]:=a[l]; a[l]:=p;

{Поиск максимального элемента на главной диагонали}

max:=a[1,1]; l:=1;

for i:=1 to m do

if a[i,i]>max then

begin

max:=a[i,i]; l:=i

end;

Алгоритмы сортировки

для одномерных массивов

для двумерных массивов

1

{Метод поиска минимального элемента}

for i:=1 to n-1 do begin

min:=a[i]; k:=i;

for j:=i+1 to n do

if a[j]<min then begin

min:=a[j];

k:=j

end;

a[k]:=a[i];

a[i]:=min;

end;

{По возрастанию первых элементов строк}

for i:=1 to n-1 do

begin

for j:=i+1 to n do

if a[i,1]>a[j,1] then

for k:=1 to n do

begin

p:=a[i,k];

a[i,k]:=a[j,k];

a[j,k]:=p;

end;

end;

2

{Метод пузырька}

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]<=a[j] then begin

p:=a[i];

a[i]:=a[j];

a[j]:=p;

end;

{По возрастанию сумм элементов в строке}

for i:=1 to n-1 do

for j:=i+1 to n do

if s[i]>s[j] then begin

p:=s[i];

s[i]:=s[j];

s[j]:=p;

end;

3

{С помощью признака перестановки}

repeat

pr:=0;

for i:=1 to n-1 do

if a[i]< a[i+1] then

begin

p:=a[i];

a[i]:=a[i+1];

a[i+1]:=p;

pr:=1;

end;

until pr=0;

{Каждую строку по возрастанию}

for i:=1 to m do

for j:=i+1 to n-1 do

for k:=j+1 to m do begin

p:=a[i,j];

a[i,j]:=a[i,k];

a[i,k]:=p;

end;