Двумерные массивы
End.
Readln
Begin
Синтаксис записи массива
Массивы
Лекция № 7
В математике широко применяются так называемые индексированные переменные: x ,x ,b ,y ,y ,z ,z
Которые читаются: икс первое, икс второе, бэ восьмое, игрек итое, игрек и минус шестое, зет итое энное, зет и плюс первое энное.
Эти подстрочные цифры и выражения называются индексами.
В среде Паскаль подстрочных букв и цифр нет. Поэтому индексированные переменные обозначаются следующим образом: x[1], x[2], b[8], y[i], y[i-6], z[i,n], z[i+1,n].
Индексированные переменные очень удобно применять при операциях с числовыми рядами.
Рассмотрим пример: Возьмем бесконечный ряд чисел Фибоначчи 1 1 2 3 5 8 13 21 34….. Эти числа образуются по определенному закону: каждое из чисел, начиная с третьего является суммой двух предыдущих. Попробуем записать это утверждение с помощью языка математики: первое число обозначим f[1], второе - f[2] и т.д. Тогда мы можем записать, что
f[1]=1 f[2]=1 f[3]=2 f[4]=3 f[5]=5 f[6]=8
Очевидно, что
f[3]=f[1]+f[2]
f[4]=f[2]+f[3]
f[5]=f[3]+f[4]
Общая формула для записи суммы двух предыдущих чисел будет выглядеть так:
f[i]=f[i-2]+f[i-1]
Самостоятельно запишите в индексном виде :
1). 14 18 22 26…… a[i]=a[i-1]+4
2). 6 12 24 48….. a[i]=2*a[i-1]
3). 3 5 9 17 33 65….. a[i]=2*a[i-1]-1
В программировании довольно часто решаются задачи, в которых имеется большое количество данных, с которыми компьютер что-то должен сделать. Например, вычислить среднегодовую температуру воздуха, которую фиксировали на метеостанции в течение всего года, а это 365 дней. Мы могли бы сделать эту программу, вводя ежедневные наблюдения за температурой с помощью оператора readln, но это долго и утомительно. Значит нам нужна программа, которая позволяла бы ввести все наблюдения за 365 дней сразу.
Они и будут называться массивом.
Массив- это сложный (структурированный) тип данных, строящийся из простых.
Var имя: array[1..n] of тип данных
Задача: Напишите программу вычисления средней температуры за одну неделю января.
Var t: array[1..7] of integer;
S,i:integer;
t[1]:=-21; t[2]:=-12; t[3]:=0; t[4]:=4; t[5]:=-5; t[6]:=-14; t[7]:=-24;
s:=0;
for i:=1 to 7 do s:=s+t[i];
writeln(‘Средняя температура=’,s/7:6:2);
Мы составили программу для одного ряда данных. Поэтому этот массив можно назвать одномерным.
Массивы могут быть двумерные, трехмерные, четырехмерные и т.д.
Поясним суть двумерных массивов на следующем примере: допустим на нескольких метеостанциях, расположенных в разных точках России, в течение многих дней измеряли температуру воздуха и показания термометров свели в таблицу. Ограничимся тремя метеостанциями и четырьмя днями.
Номер станции | 1 день | 2 день | 3 день | 4 день |
-8 | -14 | -19 | -18 | |
Требуется:
1. Вывести на экран температуру на 2-ой метеостанции за 4-ый день и на 3-ей метеостанции за 1 день.
2. Вывести показания термометров всех метеостанций за 2 –ой день.
3. Определить среднюю температуру на 3-ей метеостанции.
4. Вывести на экран всю таблицу.
5. Определить в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
Для этого обозначим показания термометров индексированной переменной с двумя индексами по следующей схеме:
t[1,1] t[1,2] t[1,3] t[1,4]
t[2,1] t[2,2] t[2,3] t[2,4]
t[3,1] t[3,2] t[3,3] t[3,4]
где первый индекс обозначает номер строки таблицы, второй индекс – номер столбца.
Программа:
Var t:array[1..3, 1..4] of integer;
i, k, s:integer;