Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ProgrPractSem1.doc
Скачиваний:
13
Добавлен:
20.03.2015
Размер:
264.19 Кб
Скачать

Работа 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 - номер этого элемента в массиве.

Ниже приводятся задания, целью которых является овладение практическими навыками работы с массивами.

Задания.

  1. Даны действительные числа A[1900], A[1901].A[1950] - количество осадков в мм, выпавших в Симферополе в течении первых 50 лет. Надо вычислить среднее количество осадков и отклонение от среднего для каждого года.

  1. Даны действительные числа 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].

  2. Даны действительные числа A[1],A[2],A[3],...,A[2*n]. Переставить числа в следующем порядкe A[1], A[2n], A[2], A[2n-1]...,A[n], A[n+1].

  1. Даны действительные числа A[1],A[2],A[3],...,A[2*n]. Получить A[1]+A[2n],A[2]+A[2n-1],...,A[n] + A[n+1].

  1. Даны действительные числа A[1],A[2],A[3],...,A[n].Если в результате замены отрицательных членов последовательности их квадратами члены будут организовывать неубывающую последовательность, то получить сумму членов исходной последовательности; в противном случае получить их произведение.

  2. Даны действительные числа A[1],A[2],A[3],...,A[n].Получить новую последовательность, выбросив из исходной все члены созначением max(A[1],A[2],A[3],...,A[n]).

  1. Даны действительные 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].).

  1. Даны целые числа A[1],A[2],A[3],...,A[n], каждое из которых отлично от нуля. Поменять местами наибольший член последовательности и член с номером M.

  1. Даны целые числа A[1],A[2],A[3],...,A[n].Если в данной последовательности ни одно четное число не расположено после нечетного, то получить все отрицательные числа последовательности, иначе - все положительные. Порядок следования чисел в обоих случаях заменяется на обратный.

  1. Даны целые числа A[1],A[2],A[3],...,A[n]. Наименьший член последовательности заменить целой частью среднего арифметического всех членов последовательности, остальные члены оставить без изменения. Если в последовательности несколькo членов со значением Min(A[1],A[2],A[3],...,A[n]), то заменить последний по порядку.

  1. Даны целые числа A[1],A[2],A[3],...,A[n], каждое из которых является либо 0, либо 1, либо 2. Переставить числа так, чтобы сначала шли только 0, затем только 1, затем только 2.

  1. Элементы массива Х преобразовать по следующему правилу (воспользоваться массивом У, как вспомогательным): все отрицательные элементы массива Х перенести в его начало, а все остальные - в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди всех остальных элементов.

  1. Элементы массива Х преобразовать по следующему правилу (воспользоваться массивом У, как вспомогательным): все элементы массива Х циклически сдвинуть вправо на k позиций.

  1. Даны действительные числа A[1],A[2],A[3],...,A[n]. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба этих числа).

  1. Даны две последовательности по 30 чисел в каждой. Найти наименьшее среди тех чисел первой последовательности, которые не входят во вторую последовательность (считая, что хотя бы одно такое число есть).

  1. Даны целые числа A[1],A[2],A[3],...,A[n] (в этой последовательности могут быть повторяющиеся члены). Получить все числа последовательности, которые входят в нее по одному разу.

  1. Построить пересечение последовательностей A[1],A[2],A[3],...,A[n] В[1],В[2],В[3],...В[n]. Т.е. получить в каком либо порядке числа, принадлежащие одновременно обеим последовательностям.

(Если возникают трудности, попробуйте решить эту задачу, предполагая, что среди членов последовательности А нет повторяющихся и среди членов последовательности В нет повторяющихся)

  1. Даны целые числа A[1],A[2],A[3],...,A[n]. Для каждого из этих чисел выяснить сколько раз оно входит в эту последовательность. Результат представить в виде ряда строк, первая из которых есть А[1] - k, где k - есть число вхождений А[1] в последовательность. Вторая строка будет иметь вид А[i] - m, где А[i]- есть первый по порядку член, отличный от А[1], m – число вхождений этого члена в последовательность и т.д.

  1. Даны целые числа A[1],A[2],A[3],...,A[n]. Получить новую последовательность, заменяя A[i] нулями, если │A[i]│<>Max(A[1],A[2],A[3],...,A[n]) и заменяя A[i] единицей в противном случае.

  1. Даны целые числа A1,A2,... An. Оставить ее без изменения, если она упорядочена по неубыванию или по невозрастанию; в противном случае удалить из последовательности те члены, порядковые номера которых кратны четырем, сохранив прежним порядок оставленных членов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]