Пример 1. Составить программу, которая сформирует случайным образом массив из 20 целых чисел и:
а) выведет его в одну строку на экране;
б) выведет элементы массива, стоящие на четных местах и вычислит их сумму;
в) вычислит количество нечетных элементов;
г) упорядочит элементы массива по убыванию.
Программа:
Program М1;
Uses Crt;
Type Numbers = Array [1..20 ] Of Integer; {}
Var A: Numbers;
I, J, S, K, P: Integer;
Begin
Clrscr;
Randomize; { инициализируем датчик случайных чисел }
For I:= 1 To 20 Do { заполняем массив А случайными числами от 0 до 99}
A [ I ]:= Random (100);
{ Задача (а) }
Writeln (‘Получили массив:’); { выводим полученный массив на экран }
For I:= 1 To 20 Do
Write (A [ I ]: 3);
Writeln; { переводим курсор в следующую строку экрана }
{ Задача (б) }
Writeln (‘Элементы на четных местах: ’);
S:= 0; { Обнулили сумму }
For I:= 1 To 20 Do
If I mod 2 = 0 { Если у элемента четный НОМЕР }
Then Begin
Write (A [ I ]: 3); { то выводим его }
S:= S + A [ I ] { и накапливаем сумму }
End;
Writeln; { переводим курсор в следующую строку экрана }
Writeln (‘ Их сумма ’, S); { выводим значение суммы }
{ Задача (в) }
K:= 0; { Обнулили счетчик нечетных элементов в массиве }
|
|
For I:= 1 To 20 Do
If A [ I ] mod 2 <> 0 { Если ЭЛЕМЕНТ нечетный }
Then K:= K + 1; { то увеличиваем значение счетчика }
Writeln (‘ Количество нечетных элементов ’, К);
{ выводим значение счетчика }
{ Задача (г) }
{ Сортируем массив А по убыванию }
For I:= 1 To 19 Do
For J:= I + 1 To 20 Do
If A[ J ] > A[ I ] Then
Begin
P:= A[ I ]; {меняем местами i-ый и j-ый элементы массива А}
A[ I ]:= A[ J ]; { для этого используем переменную p }
A[ J ]:= P
End;
Writeln (‘Получили массив:’); {выводим упорядоченный массив на экран}
For I:= 1 To 20 Do
Write (A [ I ]: 3);
Readln
End.
Пример 2. Составить программу, которая сформирует случайным образом двумерный массив N x N целых чисел и:
а) выведет его на экран в виде матрицы;
б) выведет элементы массива, стоящие над главной диагональю;
в) вычислит суму элементов, стоящих на побочной диагонали;
г) вычислит суммы столбцов.
Пояснение:
Если элемент M [i, j] двумерного массива M размера n x n расположен на главной диагонали, то i = j (номер строки равен номеру столбца).
Если элемент M [i, j] двумерного массива M размера n x n расположен на побочной диагонали, то i + j = n + 1 (сумма его индексов равна n + 1).
Программа:
Program М2;
Uses Crt;
Type Numbers = Array [1..20, 1..20 ] Of Integer;
{ Тип - двумерный массив 20 х 20 }
Var A: Numbers;
N, I, J, S: Integer;
Begin
Clrscr;
Write (‘Введите количество строк и столбцов ’);
Readln(N);
Randomize; { инициализируем датчик случайных чисел }
For I:= 1 To N Do { Организуем цикл по строкам }
For J:= 1 T N Do { Организуем цикл по столбцам }
A [ I,J]:= Random (100); { заполняем массив А случайными числами }
{ Задача (а) }
Writeln (‘Получили массив:’); { выводим массив на экран }
For I:= 1 To N Do
Begin
For J:= 1 To N Do
Write (A [I, J]: 3); {выводим все элементы i-ой строки в одну строку на экране}
|
|
Writeln { переводим на экране курсор на следующую строку}
End;
{ Задача (б) }
Writeln (‘Элементы над главной диагональю:’);
For I:= 1 To N Do
Begin
For J:= 1 To N Do
If J >= I { Eсли элемент на главной диагонали или над ней, }
Then Write (A [I, J]: 3) { то выводим его}
Else Write(‘ ‘:3); { иначе выводим три пробела }
Writeln { переводим на экране курсор на следующую строку}
End;
{ Задача (в) }
S:= 0;
For I:= 1 To N Do
For J:= 1 To N Do
If J + I = N + 1 { Eсли элемент на побочной диагонали }
Then S:= S + A [I, J]; { то накапливаем сумму }
Writeln (‘Сумма элементов побочной диагонали ’, S);
{ Задача (г) }
For J:= 1 To N Do { организуем цикл по столбцам }
Begin
S:= 0; { обнуляем сумму для каждого столбца }
For I:= 1 To N Do { цикл по строкам }
S:= S + A [I, J]; { накапливаем сумму элементов столбца }
Writeln (‘ Сумма элементов ’, J, ‘ столбца ’, S) { выводим на экран значение суммы }
End;
Readln
End.
Контрольные задания
9.1. Составить программу, которая формирует случайным образом одномерный массив из N элементов и:
a.) выводит те его элементы, которые встречаются только один раз;
b.) выводит повторяющиеся элементы (примечание: повторяющийся элемент должен выводиться один раз независимо от того, сколько раз он встречается в массиве).
9.2. Составить программу, которая формирует случайным образом два одномерных массива из N элементов и:
a.) выводит элементы первого массива, которые не встречаются во втором;
b.) выводит элементы, встречающиеся как в первом, так и во втором массивах (примечание: элемент должен выводиться один раз независимо от того, сколько раз он встречается в массивах);
c.) формирует третий массив из элементов, которые встречаются только в одном из массивов.
9.3. Составить программу, которая вводит информацию о сотрудниках (фамилия и стаж работы) и:
a.) выводит список сотрудников, фамилии которых начинаются на заданную букву;
b.) выводит список сотрудников с заданным стажем работы;
c.) выводит список сотрудников, имеющих стаж работы выше среднего;
d.) выводит список сотрудников в алфавитном порядке;
e.) выводит список сотрудников в порядке убывания стажа работы.
9.4. Составить программу, которая формирует случайным образом массив NxN целых чисел и:
a.) выводит его в виде матрицы;
b.) вычисляет сумму элементов каждой строки;
c.) находит максимальные элементы каждого столбца;
d.) вывод элементы под главной диагональю;
e.) упорядочивает по возрастанию каждую строку массива.
9.5. «Студенты». Составить программу, которая вводит следующую информацию о результатах студенческой сессии:
- список студентов,
- список экзаменов,
- оценки студентов за каждый из экзаменов.
Программа должна вывести введенную информацию в виде ведомости. Например:
Программирование | Психология | Педагогика | Математика | ||
Иванов | |||||
Петров | |||||
Сидоров | |||||
… | … | … | … | … | … |
После этого программа должна обработать эту информацию следующим образом:
a.) вывести список студентов, сдавших сессию на повышенные оценки;
b.) вывести список отличников;
c.) вывести список неуспевающих (а также названия предметов, по которым они имеют неудовлетворительные отметки);
d.) вычислить и вывести средний балл каждого студента;
e.) вывести список в порядке убывания среднего балла;
f.) определить предмет, по которому студенты учатся хуже всего, и предмет, по которому студенты учатся лучше всего.