Работа n3. Обработка массивов.
Массивом называется упорядоченная последовательность величин, обозначаемая одним именем. Все элементы массива имеют один и тот же тип. В программе массив должен быть описан либо в разделе описаний переменных, либо в разделе описаний типов. Форма описания имеет вид:
Type
T1 = Array [1..N] of Integer;
T2 = Array [1..5] of Char;
Var
A :T1; {описан массив с именем A}
B :T2; {описан массив с именем B}
C : Array [1..25] of Real; {описан массив с именем C }
Возможно использование многомерных массивов, т.е. массивов. Двумерные массивы еще называют матрицами. Описание многомерных массивов может иметь вид:
Type
T1 = Array [1..N, 1..4] of Integer;
Var
A :T1; {описана матрица с именем A размера N*4}
B : Array [1..5, 1..4] of Real {описана матрица B ра змера 5*4}
Рассмотрим некоторые простейшие алгоритмы обработки массивов:
Ввод-вывод массивов.
Операции ввода-вывода массивов обычно используют циклы. В приведенном ниже примере описан процесс ввода одномерного массива и вывод его в виде столбца.
Program Example1;
Uses Crt;
Const n=5;
Var A : Array [1..n] of Integer;
i : Integer;
Begin
ClrScr;
{Writeln (' Введите элементы массива ');
For i:=1 to n do
Begin
Write( 'A[',i,']=');
Readln(a[i]);
End;
{Вывод элементов массива}
Writeln( ' Массив A');
For i:=1 to n do Writeln(a[i]:5);
Readln;
End.
Поиск минимального в массиве.
Для одномерного массива найти минимальный элемент и определить его номер. Ниже приводится фрагмент программы поиска
Max:=A[1];
IndexMax:=1;
For i :=2 to n do
If Max<A[i] then
begin
Max:=A[i];
IndexMax:=i;
end;
Результат работы содержится в переменных: Max - наибольший элемент массива, IndexMax - номер этого элемента в массиве.
Ниже приводятся задания, целью которых является овладение практическими навыками работы с массивами.
Задания.
Даны действительные числа A[1900], A[1901].A[1950] - количество осадков в мм, выпавших в Симферополе в течении первых 50 лет. Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.
Даны действительные числа A[1],A[2],A[3],...,A[2*n]. Переставить числа в следующем порядкe A[1],A[n+1],A[2],A[n+2],A[n],A[2*n].
Даны действительные числа A[1],A[2],A[3],...,A[2*n]. Переставить числа в следующем порядкe A[1], A[2n], A[2], A[2n-1]...,A[n], A[n+1].
Даны действительные числа A[1],A[2],A[3],...,A[2*n]. Получить A[1]+A[2n],A[2]+A[2n-1],...,A[n] + A[n+1].
Даны действительные числа A[1],A[2],A[3],...,A[n].Если в результате замены отрицательных членов последовательности их квадратами члены будут организовывать неубывающую последовательность, то получить сумму членов исходной последовательности; в противном случае получить их произведение.
Даны действительные числа A[1],A[2],A[3],...,A[n].Получить новую последовательность, выбросив из исходной все члены созначением max(A[1],A[2],A[3],...,A[n]).
Даны действительные A[1],A[2],A[3],...,A[n].Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением Max(A[1],A[2],A[3],...,A[n]) умножить на Max(A[1],A[2],A[3],...,A[n].).
Даны целые числа A[1],A[2],A[3],...,A[n], каждое из которых отлично от нуля. Поменять местами наибольший член последовательности и член с номером M.
Даны целые числа A[1],A[2],A[3],...,A[n].Если в данной последовательности ни одно четное число не расположено после нечетного, то получить все отрицательные числа последовательности, иначе - все положительные. Порядок следования чисел в обоих случаях заменяется на обратный.
Даны целые числа A[1],A[2],A[3],...,A[n]. Наименьший член последовательности заменить целой частью среднего арифметического всех членов последовательности, остальные члены оставить без изменения. Если в последовательности несколькo членов со значением Min(A[1],A[2],A[3],...,A[n]), то заменить последний по порядку.
Даны целые числа A[1],A[2],A[3],...,A[n], каждое из которых является либо 0, либо 1, либо 2. Переставить числа так, чтобы сначала шли только 0, затем только 1, затем только 2.
Элементы массива Х преобразовать по следующему правилу (воспользоваться массивом У, как вспомогательным): все отрицательные элементы массива Х перенести в его начало, а все остальные - в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди всех остальных элементов.
Элементы массива Х преобразовать по следующему правилу (воспользоваться массивом У, как вспомогательным): все элементы массива Х циклически сдвинуть вправо на k позиций.
Даны действительные числа A[1],A[2],A[3],...,A[n]. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба этих числа).
Даны две последовательности по 30 чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую последовательность (считая, что хотя бы одно такое число есть).
Даны целые числа A[1],A[2],A[3],...,A[n] (в этой последовательности могут быть повторяющиеся члены). Получить все числа последовательности, которые входят в нее по одному разу.
Построить пересечение последовательностей A[1],A[2],A[3],...,A[n] В[1],В[2],В[3],...В[n]. Т.е. получить в каком либо порядке числа, принадлежащие одновременно обеим последовательностям.
(Если возникают трудности, попробуйте решить эту задачу, предполагая, что среди членов последовательности А нет повторяющихся и среди членов последовательности В нет повторяющихся)
Даны целые числа A[1],A[2],A[3],...,A[n]. Для каждого из этих чисел выяснить сколько раз оно входит в эту последовательность. Результат представить в виде ряда строк, первая из которых есть А[1] - k, где k - есть число вхождений А[1] в последовательность. Вторая строка будет иметь вид А[i] - m, где А[i]- есть первый по порядку член, отличный от А[1], m – число вхождений этого члена в последовательность и т.д.
Даны целые числа A[1],A[2],A[3],...,A[n]. Получить новую последовательность, заменяя A[i] нулями, если │A[i]│<>Max(A[1],A[2],A[3],...,A[n]) и заменяя A[i] единицей в противном случае.
Даны целые числа A1,A2,... An. Оставить ее без изменения, если она упорядочена по неубыванию или по невозрастанию; в противном случае удалить из последовательности те члены, порядковые номера которых кратны четырем, сохранив прежним порядок оставленных членов.