Program www; {Название программы} uses crt,graph; {Модули} var {c:char;} {Раздел описания} menu:array[0..2] of string; {Раздел описания} item,i:integer; {Раздел описания} procedure Zadacha; const max_class = 10; max_subj = 5; a: array[1 .. max_class] of string = ('ivanov', 'petrov', 'sidorov', 'kukushkin', 'pavlov', 'ivanova', 'petrova', 'sidorova', 'kukushkina', 'pavlova'); 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('Ученики: ( Таблица A )'); for i := 1 to max_class do writeln(a[i]); writeln; writeln(' Enter'); readln; clrscr; writeln('Оценки: ( Таблица B )'); for i := 1 to max_class do begin for j := 1 to max_subj do begin b[i, j] := 2 + random(4); write(b[i, j]:3) end; writeln; end; writeln; writeln('Enter'); readln; clrscr; writeln('Предметы: ( Таблица C )'); for i := 1 to max_subj do writeln(c[i]); 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('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{ driver,mode:integer;} t,h:real; begin h:=2*pi/400; t:=0; {driver:=VGA;mode:=VGAhi; initGraph(driver,mode,'c:\tp\tp\bin'); } 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; (* procedure Zadacha; begin clrscr;{Очистк экр } Writeln('zadacha=)'); readln; end; *) begin {clrscr;} 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.