Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[14]

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

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

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[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;

Для сравнения значений элементов массива удобно строить столбиковые диаграммы (гистограммы). Например, для вывода "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 }

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

2 II 4. 1

3 II 3. 7

4 I1 3. 2

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

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

2.Исходя из данных массива "А" п. 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. Создать и вывести на экран таблицу фамилий десяти учеников, имеющих пятерки по шести, пяти, и т. д. предметам в порядке убывания.

Для этого создать линейный массив "В" - число пятерок у каждого ученика. Создание нового массива фамилий "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];

1. 10. 4. Создание баз данных с использованием массивов записей

При работе с записями можно использовать массивы в полях записи или создавать массивы записей. Приведем примеры операторов для обоих случаев.

Type Pupil = Record

Fam: String[20];{ Фамилия }

Name: String[10];{ Имя}

Otmetka: array[1..5] of Byte { Отметки по пяти предметам } end;

Var 10 A, 10 B: array[1..30]of Pupil; {Переменные типа массив записей } N, i: byte;{ N - Число учеников в классе }

BeginN:= 13;

10 A[1]. Fam:= Гришин;

10 A[1]. Name:= Анатолий;

{ и т. д. }

Writeln (Введите оценки учеников по первому предмету: );

For i:= 1 to N do begin

With 10 A[i] do Begin

Write(Fam:21, Name:11, ); Readln(Otmetka[1]) end

{ ---------------------------------------------------------------- }

Type pupil = Record{ массивы в полях записи }

Fam: array[1..30] of String[20];{ Фамилия }

Name: array[1..30] of String[10];{ Имя }


N: Byte;{ Число учеников в классе }

Otmetka: array[1..5, 1..30] of Byte { Отметки по пяти предметам } end;

Var 10 A, 10 B: Pupil;{ Переменные типа запись }

i: byte;

With 10 A do Begin N:= 13;

Fam[1]:= Гришин; Name[1]:= Анатолий;{ и т. д. }

Writeln (Введите оценки учеников по первому предмету: ); For i:= 1 to N do begin

Write(Fam[i]:21, Name[i]:11, ); Readln(Otmetka[1, i]) end

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

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

1. 10. 5. Работа с большими массивами

Поскольку суммарный размер всех переменных, описанных в программе, не может превышать длины сегмента ( 64 К ), то использование массивов больших размеров вызывает определенные трудности. Опишем известный способ "разбиения" двумерного массива с использованием переменных типа ссылка.

program Big Mas; CONST N1= 30; N2= 50;

type M1= array [1 . . N1 ] of REAL; { тип M1 - массив переменных вещественного типа} M2= array[1..N2] of AM1; { тип M2 - массив ссылок на начальные адреса

элементов массивов типа M1} var a1, a2: M2; { двумерные массивы N1xN2 переменных вещественного типа } i, j: word;

for i:=1 to N2 do New(a1[i]); { размещение массива в оперативной памяти } for i:=1 to N2 do New(a2[i]); for j:= 1 to N1 do for i:= 1 to N2 do begin

a1[i]A[j]:= j + Sin(Pi*i/N2);{ пример расчета значений }

a2[i]A[j]:= j - Cos(Pi*i/N2){ элементов двумерных массивов }

for i:= 1 to N2 do Dispose(a1[i]); { освобождение оперативной памяти }

for i:= 1 to N2 do Dispose(a2[i]);

Readln;



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53]