Алгоритмы_массивы
.doc
Алгоритмы формирования |
||||||
|
одномерных массивов |
двумерных массивов |
||||
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; |