Program www; {Название программы} uses crt,graph; {Модули} var {Раздел описания} menu:array[0..2] of string; item,i:integer; procedure Zadacha; {Раздел описания констант} const max_class = 10; {Количество учеников} max_subj = 5; {Количество предметов} {Задаём 10 произвольных фамилий} a: array[1 .. max_class] of string = ('ivanov', 'petrov', 'sidorov', 'kukushkin', 'pavlov', 'ivanova', 'petrova', 'sidorova', 'kukushkina', 'pavlova'); {Задаём 5 произвольных предметов} c: array[1 .. max_subj] of string = ('algebra', 'physics', 'chemistry', 'literature', 'computers'); var {Двумерный массив,отвечающий за оценки} b: array[1 .. max_class, 1 .. max_subj] of byte; i, j: integer; bad: boolean; max, min, s: real; imax, imin: integer; begin clrscr; {Очистка экрана} randomize; {Генерация случайных чисел} writeln('Таблица выводит оценки 10-ти учеников по 5-ти предметам:'); writeln; write('':20); {for the name} for i := 1 to max_subj do write(c[i]:11); writeln; for i := 1 to max_class do begin writeln('____________________________________________________________________________'); write(a[i]:20); for j := 1 to max_subj do begin b[i, j] := 2 + random(4); write(b[i, j]:10); end; writeln end; writeln; {writeln('Enter');} readln; clrscr; { Часть 1 } writeln('Неуспевающие:'); {Для каждого ученика} for i := 1 to max_class do begin {Проверяем все оценки начиная с первой} j := 1; bad := false; {изначально считая его успевающим} while (j <= max_subj) and (not bad) do begin {Если какая-то из его оценок = 2} bad := (b[i, j] = 2);{То он уже неуспевающий} {И нужно напечатать его фамилию} if bad then writeln(a[i]) else inc(j) end; end; writeln; writeln('Enter'); readln; { Часть 2 } min := maxint; max := -maxint; {Для каждого ученика} for i := 1 to max_class do begin s := 0; {Находим сумму оценок} for j := 1 to max_subj do s := s + b[i, j]; {Это-среднее арифметическое} s := s / max_subj; {Проверяем на минимум} if min > s then begin {Если минимум-то запоминаем значение и индекс} min := s; imin := i end; {Проверяем на максимум} if max < s then begin {Если максимум-то запоминаем значение и индекс} max := s; imax := i end; end; {Вывод фамилии ученика с минимальным средним баллом} writeln('min средний балл: ', min:8:1, ' ', a[imin]); {Вывод фамилии ученика с максимальным средним баллом} writeln('max средний балл: ', max:8:1, ' ', a[imax]); writeln; writeln('Enter'); readln; end; procedure Zastavka; {Рисуем фон} procedure DrawFon; var {Раздел описания} GrDriver,grmode:integer; {Раздел описания} begin grdriver:=detect; {Открытие модуля Graph} initgraph(grdriver,grmode, 'c:\TP\TP\BGI');{Открытие модуля Graph} setfillstyle(9,blue); {Закрашивание неба } bar(0,0,640,75); {Небо} setcolor(14); {Жёлтый цвет} circle(45,40,30);{Рисование солнца} setfillstyle(1,14);{Закрашивание солнца} floodfill(45,40,14); setcolor(6);{Коричневый цвет} setlinestyle(0,brown,3);{Коричневый цвет} line(200,100,400,100);{Качели} line(200,300,200,100);{Качели} line(400,300,400,100);{Качели} line(260,250,260,100);{Качели} line(340,250,340,100);{Качели} setfillstyle(1,darkgray);{Закрашивание седенья} bar(250,250,350,260); {Рисование седенья} setfillstyle(1,green); {Закрашивание травы} Bar(0,300,640,360); {Трава} setlinestyle(0,0,3); end; procedure DrawKach(x,y:integer); {Рисуем качели со смещением по x и y} begin setcolor(6); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,darkgray); bar(250+x,250-y,350+x,260-y); end; procedure DrawNoKach(x,y:integer);{Стираем качели со смещением по x и y} begin setcolor(0); line(260+x,250-y,260,100); line(340+x,250-y,340,100); setfillstyle(1,black); bar(250+x,250-y,350+x,260-y); end; var t,h:real; begin h:=2*pi/400; t:=0; DrawFon; repeat DrawNoKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); t:=t+h; if t>2*pi then t:=0; DrawKach(trunc(20*(sin(t))),trunc(20*(1-cos(sin(t))))); delay(1000); until keypressed; CloseGraph; end; begin sound(500); delay(2000); nosound; menu[0]:='1.Заставка'; menu[1]:='2.Задача'; menu[2]:='3.Выход'; item:=0; while true do begin clrscr; {Очистка экрана} for i:=0 to 2 do begin if i=item then begin textcolor(14); {Цвет текста выделяемого-Жёлтый} textbackground(4);{Цвет фона выделяемого-Красный} end else begin textcolor(7);{Цвет текста-Светло-серый} textbackground(0);{Цвет фона меню-Чёрный} end; writeln(menu[i]); {Меню} end; textbackground(0);{Цвет фона-Чёрный} case readkey of #0: case readkey of #72: if item>0 then item := item - 1; {Стрелка вверх} #80: if item<2 then item := item + 1; {Стрелка вниз} end; #13: case item of 0: Zastavka;{При нажатии Enter запускается картинка} 1: Zadacha; {При нажатии Enter запускается задача} 2: Halt; {При нажатии Enter программа заканчивает работать} end; '1': Zastavka; {При нажатии клавиши 1 появляется картинка} '2': Zadacha; {При нажатии клавиши 2 появляется задача} '3': Halt; {При нажатии клавиши 3 программа заканчивает работать} end; end; end.