Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 3 курс Pascal.doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
825.86 Кб
Скачать

Массивы Одномерные массивы

Массив – последовательность однотипных величин.

Массив можно рассматривать как таблицу, в которой каждый компонент занимает определенную ячейку. Все элементы массива обозначаются одним именем (имя массива), а отдельный элемент определяется своим номером (индексом). Каждая отдельная величина называется компонентой массива. Тип компонент может быть любым, принятым в языке ПАСКАЛЬ, кроме файлового типа. Тип компонент называется базовым типом.

-2

5

0

7

11

A[1]=-2

A[2]=5

Описание массива:

Var

M: array [1..10] of integer;

Индексом элементов массива могут быть константы, переменные, выражения: A[1], A[k], B[2*k].

После объявления массива в памяти компьютера выделяется нужное количество ячеек. Для того, чтобы заполнить ячейки значениями, необходимо воспользоваться одним из следующих способов формирования массива:

1) С помощью Read:

Program primer;

Var

A: array [1..10] of integer;

I: integer;

Begin

For i:=1 to 10 do

Begin

Write(‘введите ‘, I, ‘- ый элемент’); Readln(a[i]);

End;

End.

2) C помощью команды присваивания:

a)

For i:=1 to 10 do

Begin

A[i]:=2*i+1;

Write(a[i]:4);

End;

В результате будет получен массив, элементами которого являются числа – 3, 5, 7…

b) заполнение случайными числами:

For i:=1 to 10 do

Begin

A[i]:=random(100);

Write(a[i]:4);

End;

В результате будет получен массив, состоящий из 10 случайных чисел из диапазона [0, 100).

Функция Random(N); генерирует случайное число из диапазона [0; N). Если необходимо выбрать число из диапазона [a; b], записывают random(b-a+1)+a.

[10,50] – x:=random(41)+10;

X:=random(21)-10; - [-10;10]

Для того, чтобы СС каждым запуском программы получать новые последовательности чисел, необходимо использовать процедуру Randomize, которая инициализирует датчик случайных чисел.

Стандартные задачи обработки массивов:

Пример 1. Подсчет суммы (произведения) элементов

Задан одномерный массив A[1..5]. Заполнить массив числами, вводимыми с клавиатуры, определить произведение элементов.

Program primer;

Var

a: array [1..5] of integer;

i, p: integer;

Begin

For i:=1 to 5 do

begin

Write(‘a[‘, I, ‘]=’); Readln(a[i]);

end;

P:=1;

For i:= 1 to 5 do

P:=p*a[i];

Writeln(‘p=’, p);

Readln;

End.

Пример 2. Выбор максимального (минимального) элемента массива

Сформировать одномерный массив из 20 элементов, которые выбираются случайным образом из диапазона [-50; 50]. Определить максимальный элемент и его индекс.

Program primer;

Var

a: array [1..20] of integer;

i, max, k : integer;

Begin

For i:=1 to 20 do

begin

a[i]:= random(101)-50;

Write(a[ i]:3);

end;

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

For i:=2 to 20 do

begin

if max<a[i] then begin max:=a[i]; k:=I; end;

end;

Writeln(‘max=’, max, ‘index=’, k);

Readln;

End.

Пример 3. Подсчет количества элементов, удовлетворяющих условию

Сформировать одномерный массив из 12 элементов. Определить количество четных элементов.

Program primer;

Var

a: array [1..12] of integer;

i, k: integer;

Begin

k:=0;

For i:=1 to 20 do

begin

a[i]:= random(101)-50;

Write(a[ i]:3);

if (a[i] mod 2=0) then inc(k);

end;

Writeln(‘kol=’, k);

Readln;

End.

Пример 4. Поиск заданного элемента

Сформировать одномерный массив из 7 элементов. Определить, содержится ли в нем элемент ‘5’, если элемент найден, поменять его с первым элементом.

Program primer;

Var

a: array [1..7] of integer;

i, k: integer;

Begin

k:=0;

For i:=1 to 7 do

begin

a[i]:= random(101)-50;

Write(a[ i]:3);

if (a[i] =5) then k:=I;

end;

Writeln;

if k<>0 then

begin

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

For i:=1 to 7 do

Write(a[ i]:3);

end

else Writeln(‘net 5’);

Readln;

End.

Пример 5. Сортировка массива

Сформировать одномерный массив из 10 элементов. Упорядочить по возрастанию элементы массива.

Program primer;

Var

a: array [1..10] of integer;

i, j, t: integer;

Begin

For i:=1 to 10 do

begin

a[i]:= random(51);

Write(a[ i]:3);

end;

For i:=1 to 9 do

For j:=i+1 to 10 do

If a[i]>a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end;

For i:=1 to 10 do

Write(a[i]:3);

Readln;

End.