Читайте также: |
|
При необходимости использования большого количества однотипных данных обычно используются массивы.
Массив - эта структура данных в языке Pascal, имеющих общее имя, к элементам которой можно обращаться посредством индексов.
Количество элементов в массиве должно быть заранее определено.
Массивы бывают одномерные (линейные), двумерные (прямоугольные, или, как их называют в математике, матрицы) и размерности большей двух.
Линейный массив представим в виде строки, например:
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] одномерный массив из 8 элементов
Матрицу можно представить в виде прямоугольной таблицы:
B[1,1] B[1,2] B[1,3] B[1,4] двумерный массив из 3 стоок и 4 столбцов
B[2,1] B[2,2] B[2,3] B[2,4]
B[3,1] B[3,2] B[3,3] B[3,4]
При описании массива необходимо указать имя, количество элементов по каждой размерности и тип его элементов.
Например, пусть изображенные выше массивы A и B содержат в себе соответственно элементы целого и вещественного типов. Тогда они должны быть описаны следующим образом:
Var A: Array [1..8] Of Integer;
B: Array [1..3,1..4] Of Real;
Здесь Array - служебное слово языка, обозначающая массив.
Для обращения к конкретному элементу массива используется имя массива и индексы, разделяемые запятыми и заключенные в квадратные скобки, например:
A[7]:=334; {предпоследнему элементу массива A присваивается значение 334} B[2,j]:=A[i]-B[3,4]; {j-му элементу 2-й стоки массива B присваивается значение, равное разности i-го элемента массива A и нижнего левого элемента массива B}
Таким образом, индексами могут быть не только целые константы, но и любые выражения целого типа.
Для обработки массивов целесообразно использовать циклы FOR.
Например, программа, обеспечивающая ввод оценок ученика и печать его среднего балла:
Program ArrayExample;
Var I: Integer; {для организации цикла}
N: Integer; {количество оценок}
O: Array [1..100] Of Integer; {линейный массив для 100 (max) оценок} S: Integer; {сумма всех оценок}
Begin
Write ('Количество оценок (не больше 100): '); Read (N);
Writeln ('Введите ',N,' оценок через пробел. Конец ввода - Enter'); S:=0; {обнулить сумму}
For I:=0 To N Do Begin
Read (O[I]); {считать i-ю оченку}
S:=S+O[I] {добавить ее к сумме}
End;
Writeln('Средний балл равен ',S/N:1:1) {вывод среднего с точностью 0.1} End.
При обработки массивов размерностью большей единицы обычно применяют вложеннные циклы FOR.
Пример программы, печатающей фамилию ученика с наивысшим средним баллом:
Program Array2Example;
Const NKids=3; {количество учащихся}
NO=5; {количество оценок}
Var O: Array [1..10,1..15] Of Integer; {массив оценок}
F: Array [1..10] Of String; {массив фамилий учеников}
S: Array [1..10] Of Real; {массив для средних оценок}
M: Integer; {для хранения индекса ученика с максимальным средним} Max: Real; {для хранения максимального среднего балла}
I,J: Integer; {для организации циклов}
Begin
M:=1; {пусть ученик с максимальным средним баллом - первый} Max:=0; {пусть максимальный средний балл равен 0}
For I:=1 To NKids Do Begin
S[I]:=0;
Write ('Фамилия ',I,'-го ученика: ');
ReadLn (F[I]);
WriteLn ('Введите ',NO,' оценок через пробел. Конец ввода - Enter'); For J:=1 To NO Do Begin
Read (O[I,J]); {считаем J-ю оценку I-го ученика}
S[I]:=S[I]+O[I,J] {добавим ее к сумме оценок}
End;
S[I]:=S[I]/NO; {разделим сумму на количество для нахождения среднего} If S[I] > Max Then Begin {если текущий средний балл больше максимального} M:=I; {то номер ученика с максимаольным баллом - текущий} Max:=S[I] {и максимальный средний балл заменим на текущий} End;
Readln {для подготовки к чтению следующей фамилии}
End;
WriteLn ('Максимальный средний балл имеет ',F[M])
End.
Дата добавления: 2015-02-16; просмотров: 88 | Поможем написать вашу работу | Нарушение авторских прав |
|