Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга 123.doc
Скачиваний:
11
Добавлен:
03.11.2018
Размер:
516.1 Кб
Скачать
    1. Ввод и вывод массивов

Так как массив обычно описан «с запасом», сначала вводят конкретный размер массива, а потом поэлементно сам массив.

Const nmax=100; { описываем массив с «запасом»}

Type vector=array [1..nmax] of Integer;

Var a: vector;

i, n, max: Integer;

Begin

Write ('введите размер массива');

Readln(n); {вводим конкретный размер массива}

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

{можно работать с массивом}

End.

    1. Популярные алгоритмы работы с массивами

      1. Сумма элементов массива

Очень простой алгоритм. Сумма накапливается в переменной «s», которую нужно предварительно обнулить.

Const nmax=100; { описываем массив с «запасом»}

Type vector=array[1..nmax] of Integer;

Var a: vector;

i, n : Integer;

s: Longint; {возможно и Real}

Begin

Write ('введите размер массива');

Readln(n);

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

s:=0;

For i:=1 to n do s:=s+a[i];

Writeln(s);

Readln

End.

      1. Количество положительных элементов в массиве

Программа не требует пояснений. Напомним, что счетчик (в примере счетчик К) нужно обязательно обнулять.

Const nmax=100;

Type vector=array[1..nmax] of Integer;

Var a:vector;

i, n, k: Integer;

Begin

Write ('введите размер массива');

Readln(n);

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

k:=0;

For i:=1 to n do

If a[i] > 0 then k:=k+1;

Write(k);

Readln

End.

      1. Поиск максимального (минимального) элемента массива

Алгоритм: предполагаем, что максимальным (минимальным) является первый элемент массива. Просматриваем все остальные элементы массива и, если очередной элемент оказывается больше (меньше), чем выбранный нами максимум (минимум), то заменяем максимум (минимум) на этот элемент. Очевидно, мы найдем только величину максимального (минимального) элемента, но не его место в массиве (номер элемента).

Const nmax=100; { описываем массив с «запасом»}

Type vector=array [1..nmax] of Integer;

Var a: vector;

i, n, max: Integer;

Begin

Write ('введите размер массива');

Readln(n); {вводим конкретный размер массива}

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

max:=a[1];

For i:=2 to n do

If a[i]>max Then max:=a[i];

Write('=',max);

Readln

End.

Найдем значение максимального элемента и его номер (описание массива и его ввод не меняем).

Вариант программы:

Const nmax=100; { описываем массив с «запасом»}

Type vector=array[1..nmax] of Integer;

Var a:vector;

i, n, max: Integer;

num: Integer; { номер максимального элемента}

Begin

Write ('введите размер массива');

Readln(n); {вводим конкретный размер массива}

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

max:=a[1]; num:=1;

For i:=2 to n do

If a[i]>max Then Begin

max:=a[i]; {запоминаем новое значение max}

num:=i; {запоминаем номер этого элемента}

End;

Write('максимум =', max , 'номер =', num);

Readln

End.

Но если мы знаем номер элемента, то по номеру всегда получим и сам элемент. С учетом этого, программа примет вид:

Const nmax=100; { описываем массив с «запасом»}

{ в задаче обычно указывается возможный размер}

Type vector=array[1..nmax] of Integer;

Var a:vector;

i, n: Integer;

num: Integer; {номер максимального элемента}

Begin

Write ('введите размер массива');

Readln(n);

Write ('введите элементы массива столбиком');

For i:=1 to n do Readln(a[i]);

{считаем, что максимальный элемент первый}

num:=1; { используем только его номер}

For i:=2 to n do

If a[i]>a[num] Then num:=i;

Write('максимум =', a[num] , 'номер =', num);

Readln

End.