Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IF_2.DOC
Скачиваний:
7
Добавлен:
19.12.2018
Размер:
2.22 Mб
Скачать

2 S[2] Массив a: a[2, 1] a[2, 2] a[2, 3] a[2, 4] . . . A[2, j] . . . A[2, m]

3 S[3] a[3, 1] a[3, 2] a[3, 3] a[3, 4] . . . a[3, j] . . . a[3, m]

4 S[4] a[4, 1] a[4, 2] a[4, 3] a[4, 4] . . . a[4, j] . . . a[4, m]

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

I S[I] a[i, 1] a[i, 2] a [i, 3] a [i, 4] . . . a[i, j] . . . a[i, m]

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

N S[N] a[n, 1] a[n, 2] a[n, 3] a[n, 4] . . . a[n, j ] . . . a[n, m]

45

Массив оценок можно задать с использованием функции Random, например:

for i:= 1 to N do for j:= 1 to M do A[i, j]:= random(4)+2;

Для вывода наименований предметов ( "шапка" таблицы ) можно использовать операторы:

Writeln;

Write('Фамилия\\Предметы:|'); For i:= 1 to M do write(P[i]:9,'_ |');

Для вывода элементов массива "A" на экран удобно использовать вложенный цикл:

for i:= 1 to N do begin writeln; write(S[i]:19, '_ |';

for j:= 1 to M do write(A[i,j]:7, ' _ _ |') end;

Для расчета массива "SS" - сумм "M" элементов в каждой из "N" строк массива "A" (NxM) можно применить операторы:

for i:= 1 to N do begin SS[i]:= 0;

for j:= 1 to M do SS[i]:= SS[i] + A[i, j] end;

Здесь для каждого индекса "i" от 1 до N происходит суммирование элементов A[i, j] по индексу "j" от 1 до M.

При модификации массива "A" изменяется расположение данных в исходном массиве, например, в случае вставки данных из линейного массива "B" в колонку с номером "M1" необходимо сдвинуть данные в колонках J >= M1 используя операторы:

for i:= 1 to N do begin

for j:=M+1 downto M1+1 do A[i,j]:=A[i,j-1]; A[i,M1]:=B[i] end;

Если порядковый номер предмета изменится, то необходимо изменить расположение оценок в массиве "A", например, перестановку колонок с оценками по физике и химии можно сделать операторами:

for j:= 1 to N do begin

a1:=A[1,j]; A[1,j]:=A[2,j]; A[2,j]:=a1 end;

Примечание: при модификации массива "A" не забудьте соответственно изменять расположение данных в сопутствующих массивах, например, "P" или "S".

При создании новых массивов согласно некоторым условиям выбираются данные из элементов исходного массива. Например, для создания массива "В" из четных столбцов массива "A" можно использовать операторы:

for j:= 1 to M do If (j Mod 2) = 0 then

for i:= 1 to N do B[i,j Div 2]:= A[i,j];

Для создания массива "В", состоящего из строк массива "A", удовлетворяющих условию A[i, 1] > C, где C - заданное число, можно использовать операторы:

k:= 0; for i:= 1 to N do If A[i,1] > C then begin

k:= k + 1; for j:= 1 to M do B[k,j]:= A[i,j] end;

46

Для сравнения значений элементов массива удобно строить столбиковые диаграммы (гистограммы). Например, для вывода "N" значений положительных элементов массива "SS" в виде горизонтальной гистограммы можно использовать операторы:

k:= 30/S_max; { k - нормирующий масштабный коэффициент }

{ S_max - наибольший элемент массива "SS" }

for i:=1 to N do begin writeln; { переход к новому столбику }

yg:=round(k*SS[i]); { yg - длина столбика гистограммы }

for j:=1 to yg do write(#220); { вывод символа '_' с кодом 220 }

end;

Добавив операторы вывода порядкового номера и значений SS[ i] получаем гистограмму в виде:

1 3. 5

2 4. 1

3 3. 7

4 3. 2

Практическое задание N 1. 23

1. Рассчитать средний балл по шести предметам для каждого из десяти учащихся. Массивы наименований предметов и фамилий учащихся задать в программе. Массив оценок "A" задать с использованием функции Random. Вывести на экран таблицу: Фамилии (по вертикали), предметы (по горизонтали), все оценки, а также колонку со средними значениями оценок каждого учащегося. Вывести фамилии учеников и наибольшим и наименьшим средним баллом.

2. Исходя из данных массива "A" п. 1, создать массивы "B", "C", "D", содержащие число пятерок, четверок и троек соответственно, полученных каждым учеником по всем шести предметам. Вывести на экран таблицу: фамилии, предметы, оценки с колонками данных массивов "B", "C", "D".

Примечание к п. п. 1- 2 : Вывести гистограммы с указанием фамилии ученика и его среднего балла, либо число троек полученных по всем предметам.

3. Модифицировать массив. Исходные данные п. 1. Вставить в список учащихся новую фамилию ученика с номером 5. Фамилию и оценки ученика ввести оператором Read. Убрать из таблицы предмет с номером два. Вывести на экран исходную и новую таблицы - фамилии, предметы, массив оценок.

4. К заданию п. 1. Создать два массива оценок учеников с четными и нечетными номерами. Вывести на экран таблицы - массивы оценок для каждой группы с указанием предметов и фамилий учащихся.

5. К заданию п. 1. Создать и вывести на экран три таблицы фамилий учеников со средним баллом: от 3-х до 4-х (не включая 4), от 4-х до 5-ти и 5 (отличников) с указанием всех оценок и среднего балла.

6. К заданию п. 1. Создать и вывести на экран таблицу фамилий десяти учеников, имеющих пятерки по шести, пяти, и т. д. предметам в порядке убывания.

Для этого создать линейный массив "B" - число пятерок у каждого ученика. Создание нового массива фамилий "S1" можно проводить используя циклы: k:=0; for i:=1 to 10 do for o:=6 downto 0 do if B[i]=o then k:=k+1; S1[k]:=S[i];

47

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]