В повседневной и научной практике часто приходится встречаться с информацией, представленной в табличной форме. Вот, например, таблица, содержащая значения температуры, за определенный год.
Месяц
Температура
-21
-18
-7,5
5,6
22,2
5,4
-7
-18
Такую таблицу называют линейной. Она представляет собой последовательность упорядоченных чисел. Если требуется какая-то математическая обработка данных, то для их обозначения вводят индексную символику.
Например:
Т1 – температура января;
Т5 – температура мая;
В общем виде множество значений, содержащихся в таблице, можно обозначить так: { Ti }, I = 1,2,3, …,12.
Порядковые номера элементов называются индексами. Индексированные величины удобно использовать для записи их математической обработки: . По данной формуле можно подсчитать среднегодовую температуру.
В языке Паскаль для записи линейных таблиц используют структурированный тип данных, который называется одномерным массивом. Одномерный массив представляет собой совокупность пронумерованных однотипных значений, имеющих общее имя. Элементы массива обозначаются переменными с индексами. Индексы записывают в квадратных скобках после имени массива.
Например: T[1], T[5], T[I] и т.п.
Описание одномерных массивов:
Переменная типа одномерный массив описывается в разделе описания переменных в следующем виде:
varимя массива: array[1..n] ofтип;
n – количество элементов массива.
Пример:var T: array [1..12] of real;
Обработка массивов в программах производится поэлементно. Обращаются к элементам массива, указывая индекс.
Ввод массива (чтение массива):
writeln(‘введите ’,n,‘ элементов массива’);
for i:=1 to 12 do
readln (t[i]);
Вывод массива:
writeln(‘массив’);
for i:=1 to 12 do
writeln (‘t[’,i,‘]=’, t[i]:0:2);
Примеры задач.
1. Известны данные о среднемесячной температуре за год. Требуется вычислить среднегодовую температуру, а также ежемесячные отклонения от этой величины.
Program Example;
Const n=12;
Var t, dt:array[1..n] of real;
ts:real;
i:integer;
Begin {ввод исходных данных}
writeln (‘введите температуру за ’,n,‘ месяцев’);
for i:=1 to n do
readln (t[i]);
{вычисление средней температуры}
ts:=0;
for i:=1 to n do
ts:=ts+t[i];
ts:=ts/n;
{вычисление таблицы отклонений от среднего}
for i:=1 to n do
dt[i]:=t[i]–ts;
{вывод результатов}
writeln (‘среднегодовая температура =’ , ts:0:2);
writeln (‘отклонения от среднегодовой температуры:’);
for i:=1 to n do
writeln (i,‘ – месяц: ’, dt[i]:0:2);
End.
2. Дан массив из 8 элементов целого типа. Найти сумму положительных элементов массива.
Program summa;
Const n=8;
Var a:array[1..n] of integer;
i,s:integer;
Begin {ввод исходных данных}
writeln (‘введите ’,i,‘ целых чисел’);
for i:=1 to n do
readln (a[i]);
s: =0;
for i:=1 to n do
if a[i]>0
then s:=s+a[i];
writeln (‘сумма положительных чисел =’,s);
End.
3. Задать массив B из 12 элементов по следующей формуле: . Вывести полученный массив. Найти максимальный элемент массива.
Program maximum;
Const n=12;
Var b:array[1.. n] of integer;
i,max:integer;
Begin {получение массива}
for i:=1 to n do
if i<6
then b[i]:=sqr(i)-15
else b[i]:=i+8;
{вывод массива}
writeln(‘массив’);
for i:=1 to n do
writeln (‘b[’,i,‘]=’, b[i]);
{поиск максимального элемента массива}
max:=b[1];
for i:=1 to n do
if b[i]>max
then max:=b[i];
writeln (‘максимум=’,max);
End.
4. Получить массив C из 10 элементов следующего вида: . Вывести полученный массив. Сосчитать количество отрицательных элементов массива.
Program kolvo;
Const n=10;
Var c:array[1.. n] of real;
i,k:integer;
Begin {получение массива}
for i:=1 to n do
c[i]:=(i*sqr(i)-10*i)/3;
{вывод массива}
writeln(‘массив’);
for i:=1 to n do
writeln (‘с[’,i,‘]=’, с[i]:0:2);
{подсчет количества отрицательных}
k:=0;
for i:=1 to n do
if c[i]<0
then k:=k+1;
writeln (‘количество отрицательных чисел=’,k);
End.
5. Дан массив из 10 элементов целого типа. Заменить отрицательные элементы массива на их квадрат, положительные оставить без изменения. Вывести полученный массив.
Program zamena;
Const n=10;
Var a:array[1.. n] of integer;
i:integer;
Begin {ввод исходных данных}
writeln (‘введите ’,i,‘ целых чисел’);
for i:=1 to n do
readln (a[i]);
{замена отрицательных чисел}
for i:=1 to n do
if a[i]<0
then a[i]:=sqr(a[i]);
{вывод массива}
writeln(‘массив’);
for i:=1 to n do
writeln (‘a[’,i,‘]=’, a[i]);
End.
Задания.
Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.
Вариант 1
1. Дан массив из 10 целых чисел. Найти количество отрицательных элементов массива.
2. Дан массив из 8 чисел. Заменить все положительные числа на 0. Отрицательные числа оставить без изменения. Вывести элементы массива.
3. Дано натуральное число n. Задать массив из n элементов по формуле . Вывести элементы массива. Найти минимальный элемент массива.
Вариант 2
1. Дан массив из 8 чисел. Найти максимальный элемент массива.
2. Дан массив из 6 целых чисел. Умножить все отрицательные числа на 5. Вывести элементы массива.
3. Дано натуральное число n. Задать массив из n элементов по формуле . Вывести элементы массива. Найти сумму положительных элементов массива.
Вариант 3
1. Дан массив из 10 целых чисел. Найти минимальный элемент массива.
2. Дан массив из 7 чисел. Заменить все отрицательные числа на их модуль. Вывести элементы массива.
3. Дано натуральное число n. Задать массив из n элементов по формуле . Вывести элементы массива. Найти количество отрицательных элементов массива.
Вариант 4
1. Дан массив из 7 чисел. Найти сумму положительных элементов массива.
2. Дан массив из 6 целых чисел. Умножить все положительные числа на -2. Вывести элементы массива.
3. Дано натуральное число n. Задать массив из n элементов по формуле . Вывести элементы массива. Найти максимальный элемент массива.