Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Массивы. Массив - это упорядоченная последовательность однотипных элементов, которым присвоено одно имя



Массив - это упорядоченная последовательность однотипных элементов, которым присвоено одно имя. Число элементов в массиве ограничено и фиксировано. Положение элемента в массиве определяется его индексами. Индекс один, в случае одномерного массива, или несколько, если массив многомерный. Для обращения к элементу массива указывается имя массива и индексы элемента в скобках.

Например, в языке 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...