Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Индексные переменные






 

Массив – совокупность однотипных данных, объединенных одним именем. Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один из нескольких индексов. Вектор – пример одномерного массива, в котором элементы нумеруются одним индексом. Если в массиве хранится таблица значений (матрица), его элементы нумеруются двумя индексами.

Характеристики массива:

- тип – общий тип элементов массива;

- размерность – количество индексов массива;

- диапазон – количество допустимых значений каждого индекса;

- форма – совокупность размерности и диапазонов.

Массив должен быть объявлен в разделе описания переменных:

Var имя массива: array [диапазон индексов] of тип;

Тип элементов массива может быть любым, кроме файлового; тип индексов любой порядковый тип.

Пример:

A: array [1..5, 1..5] of real;

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

После объявления массива каждый его элемент можно обрабатывать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[3], Vector[10] позволяет обратиться к третьему элементу массива Mas и десятому элементу массива vector. При работе с двумерными массивами указываются два индекса. Например, запись Matr[4, 6] делает доступным для обработки значение элемента, находящегося в четвертой строке шестого столбца массива Matr.

Рассмотрим типичные ситуации, возникающие при работе с данными типа array. Для этого опишем три массива и четыре вспомогательные переменные.

Var A, D: ARRAY [1..4] OF REAL;

B: ARRAY [1..10, 1..15] OF INTEGER;

I, J, K: INTEGER;

S: REAL;

Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод-вывод значений производится поэтапно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с экрана с помощью оператора read или readln с использованием оператора цикла for:

For i: =1 to 4 do readln(a[i]);

Аналогично значения элементов двумерного массива вводятся с помощью сложенного оператора for:

For i: =1 to 10 do

For j: =1 to 15 do

Read(b[I, j]);

Можно ввести значения и отдельных элементов, а не всего массива. Так операторами read(A[3]), readln(b[6, 9]) вводятся значения третьего элемента вектора А и значения элемента, расположенного в шестой строке девятого столбца матрицы В.

Вывод значений элементов массива выполняется аналогичным образом, но используются операторы write и writeln:

For i: =1 to 4 do

Write(A[i]); writeln;

Или

For i: =1 to 10 do begin

For j: =1 to 15 do

Write(b[I, j]); writeln; end;

Иногда требуется осуществить поиск в массиве каких-либо элементов, удовлетворяющих неким условиям. Пусть, например, надо выяснить, сколько элементов массива А имеют нулевое значение. Для ответа на этот вопрос введем дополнительную переменную к и воспользуемся операторами for и if:

K: =0;

For i: =1 to 4 do

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

После выполнения цикла переменная к будет содержать количество элементов массива А с нулевыми значениями.

Пример 1. Составить программу, которая формирует двумерный массив по формуле и выводит его на экран.

Program massiv_1;

Var Mas: array[1..5, 1..5] of real;

I, j: integer;

Begin

For i: 1 to 5 do begin

For j: =1 to 5 do begin

Mas[I, j]: =sin(i*j)+cos(i/j);

Write(mas[I, j]: 6: 2);

End;

End;

End.

Пример 2. Составить программу, которая формирует вектор случайных чисел, выполняет поиск максимального элемента, а затем выводит на экран его значение и порядковый номер в векторе.

Program massiv_2;

Var mas: array[1..20] of integer;

I, max, nim: integer;

Begin

Randomize;

For i: 1 to 20 do begin

Mas[i]: =random(99)+1;

Write(mas[i]: 6);

End; writeln;

Max: =-100000000;

For i: =1 to 20 do

If mas[i]> max then begin

Max: =mas[i]; nim: =I;

End;

Writeln(‘max=’, max: 6, ‘ nom=’, nom: 2);

End.

Пример 3. Составить программу, которая сортирует по возрастанию целочисленный массив и выводит его на экран.

Program massiv_3;

Const n=10;

M: array[1..n] of integer=(9, 11, 12, 3, 19, 1, 5, 17, 10, 18);

Var s, I, j: integer;

Begin

For i: =1 to n-1 do

For j: =i+1 to n do

If m[i]> m[j] then begin

S: =m[i];

M[i]: =m[j];

M[j]: =s;

End;

For i: =1 to n do

Write(m[i]: 6); writeln;

End.

Пример 4. Составить программу, которая сортирует по убыванию двумерный массив целых чисел (сортировка по строкам).

Program massiv_4;

Const n=4;

M: array[1..n, 1..4] of integer=((3, 2, 4, 1), (5, 7, 6, 8), (9, 11, 10, 12), (15, 14, 16, 13));

Var i, j, k: integer;

Buffer: integer;

Begin

For k: =1 to n do

For j: =1 to n-1 do

For j: =i+1 to n do

If m[k, i]< m[k, j] then begin

Buffer: =m[k, i];

M[k, i]: =m[k, j];

M[k, j]: =buffer;

End;

For i: =1 to n do begin

For j: =1 to n do

Write(m[i, j]: 6); writeln;

End;

End.

Пример 5. Составить программу, которая формирует вектор и вычисляет значение среднего арифметического его элементов, больших, чем 10.

Program massiv_5;

Const n=5;

Var d: array [1..n] of integer;

I, k: integer;

S: real;

Begin

Randomize;

For i: =1 to n do begin

D[i]: =random(100);

Write(d[i]);

End; writeln;

K: =0; s: =0;

For i: =1 to n do

If d[i]> 10 then begin

S: =s+d[i];

K: =k+1;

End;

S: =s/k;

Writeln(‘s=’, s: 6: 2);

End.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.