Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Массив - это упорядоченная последовательность однотипных элементов, которым присвоено одно имя. Число элементов в массиве ограничено и фиксировано. Положение элемента в массиве определяется его индексами. Индекс один, в случае одномерного массива, или несколько, если массив многомерный. Для обращения к элементу массива указывается имя массива и индексы элемента в скобках.
Например, в языке Pascal описание одномерного массива (вектора) X из 100 целых чисел,
X: Array [1..100] of Integer;
обращение к элементу с номером 5 - X[5], а к текущему элементу с номером I – X[I]. Описание аналогичного массива на языке Basic:
DIM X(100)
а обращение к тем же элементам X(5), X(I).
Описание двумерного массива (матрицы) Z вещественных чисел, состоящего из 10 строк и 20 столбцов, т.е. из 200 элементов,
Z: Array [1..10, 1..20] of Real;
обращение к элементу с номером строки 5, столбца 4 - Z[5, 4], а к текущему элементу с номером строки I, столбца J – Z[I, J].
Элементы матрицы Z размещаются в памяти по строкам (строка за строкой) в следующем порядке:
Z[1][1], Z[1][2],..., Z[1][20],
...
Z[10][1], Z[10][2],..., Z[10][20].
Описание аналогичного массива на языке Basic:
DIM Z(10,20)
а обращение к тем же элементам Z(5, 4), Z(I, J). Первый индекс означает номер строки, а второй – номер столбца.
Массивы необходимо использовать в тех задачах, где требуется хранить всю входную последовательность данных. Например, если данные просматриваются и обрабатываются более одного раза, обрабатываются не в том порядке, в котором вводятся и т.д.
Задача 6.12. Даны целые числа a1, a2, …, a31 - значения температуры в течение месяца.
а) найти среднюю температуру за месяц;
б) найти среднюю температуру за месяц и дни, когда температура была ниже средней.
В задаче 6.12а не требуется массив. Можно последовательно вводить значение ai (i от 1 до 31) в одну и ту же переменную, например t, и вычислить суммарную, а затем и среднюю температуру за месяц.
Фрагмент программы на языке Pascal:
ReadLn(N); {количество дней в месяце}
S:=0; {начальное значение суммарной температуры}
For I:=1 to N do begin {цикл на N шагов}
ReadLn (t);{ввод температуры очередного дня}
S:= S+ t; {добавление температуры очередного дня к сумме}
End;
S:= S/N; {вычисление средней температуры за N дней}
Тест. Вход: N=4
21 18 23 15
Выход: Средняя температура 19.25
В задаче 6.12б требуется массив для хранения всех значений температуры за месяц. После вычисления суммарной и средней температур за месяц, массив со значениями температуры просматривается еще раз и определяются дни с температурой ниже средней.
Тест. Вход: N=4
21 18 23 15
Выход: Средняя температура 19.25
Дни, c температурой ниже средней:
2 4
Решение задачи 6.12б. на языке Turbo Pascal:
Program Sred_temp;
Var S: Real; {суммарная (затем средняя) температура }
N, {количество дней в месяце}
i: Integer; {номер текущего дня}
{массив для хранения значений температуры}
T: Array [1..31] of Integer;
BEGIN
S:=0;
Write(’Введите количество дней: ’); ReadLn(N);
Write(’Введите значения температуры: ’);
For I:=1 to N do begin
ReadLn(T[I]); { ввод температуры очередного I- ого дня }
S:=S + T[I]; {вычисление суммарной температуры}
End;
S:= S/N; {вычисление средней температуры }
WriteLn(’Средняя температура = ’, S:4:1);
WriteLn(’Дни, c температурой ниже средней: ’);
For I:=1 to N do
if T[I] < S {сравнение текущей температуры со средней}
then Write (I:3); {вывод номера дня с температурой ниже средней}
ReadLn
END.
Пояснения к программе даны в виде комментариев.
Задача 6.13. Дана последовательность из N чисел. Составить программы решения следующих задач.
а) определить количество чисел, равных первому числу последовательности;
б) определить количество чисел, равных последнему числу последовательности.
Для решения задачи 6.13а не нужен массив, а для решения задачи 6.13б необходим массив для хранения всех чисел.
Тест задачи 6.13а. Вход: N=5
5 2 5 5 4
Выход: Количество чисел равных первому – 2
Тест задачи 6.13б. Вход: N=5
5 4 5 5 4
Выход: Количество чисел равных последнему – 1
Решение задачи 6.13а на языке Pascal:
Program Kol_a;
Var P, {первое число }
A: Real; {текущее число }
N, {количество чисел}
K, {количество чисел, равных первому числу}
i: Integer; {номер текущего числа}
BEGIN
K:=0;
WriteLn (’Введите количество чисел: ’); ReadLn(N);
WriteLn (’Введите первое число: ’); ReadLn(P);
WriteLn(’Введите числа: ’);
For I:=2 to N do begin
ReadLn(A);
if A = P then K:=K+1;
end;
WriteLn (’Количество чисел, равных первому - ’, K);
ReadLn
END.
Решение задачи 6.13б на языке Pascal:
Program Kol_b;
Var N, {количество чисел}
K, {количество чисел, равных первому числу}
i: Integer; {номер текущего числа}
A: Array [1..100] of Real; {массив для хранения 100 чисел}
BEGIN
WriteLn (’Введите количество чисел: ’); ReadLn(N);
WriteLn(’Введите числа: ’);
For I:=1 to N do
ReadLn(A[I]);
For I:=1 to N-1do
if A[I] = A[N] then K:=K+1;
WriteLn (’Количество чисел, равных последнему - ’, K);
ReadLn
END.
Дата публикования: 2015-01-14; Прочитано: 362 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!