Имеется информация об итогах зимней сессии на 1 курсе: фамилия, номер группы, оценка1, оценка2, оценка3. Причем в фамилии – не более 12 букв, номер группы – целое от 11 до 13, каждая оценка это 2, 3, 4, 5, причем Сведения о каждом студенте первокурснике заданы в следующем виде первая оценка по математике, вторая по экономике, третья по программированию. Написать программу, которая вводит эту информацию и печатает следующие данные: фамилии студентов имеющих задолженность хотя бы по одному предмету; качество успеваемости, т.е. процент студентов сдавших все экзамены на 5 и 4 — Pascal(Паскаль)

uses crt;
const nmax=100;
type TStud=record
           fam:string[12];
           gr:11..13;
           oc:array[1..5]of 2..5;
           end;
var sp:array[1..nmax] of Tstud;
    n,i,j,k,p:integer;
    kch:real;
begin
clrscr;
repeat
write('Количество студентов n=');
readln(n);
until n in [1..nmax];
for i:=1 to n do
  begin
    writeln('Студент ',i);
    write(' Фамилия: ');readln(sp[i].fam);
    repeat
    write(' Номер группы 11-13: ');
    readln(sp[i].gr);
    until sp[i].gr in [11..13];
    for j:=1 to 3 do
     repeat
       write('  Оценка ',j,'=');
       readln(sp[i].oc[j]);
     until sp[i].oc[j] in [2..5];
  end;
clrscr;
writeln('Список студентов:':40);
writeln;
p:=0;
writeln('------------------------------------------------------------------');
writeln('|   Фамилия   | Группа | Математика | Экономика| Программирование|');
writeln('------------------------------------------------------------------');
for i:=1 to n do
  begin
   k:=0;
   for j:=1 to 3 do
   if sp[i].oc[j] in [4,5] then k:=k+1;
   if k=3 then p:=p+1;
   gotoXY(1,whereY);write('| ',sp[i].fam);
   gotoXY(15,whereY);write('|    ',sp[i].gr);
   gotoXY(24,whereY);write('|    ',sp[i].oc[1]);
   gotoXY(37,whereY);write('|    ',sp[i].oc[2]);
   gotoXY(48,whereY);write('|      ',sp[i].oc[3]);
   gotoXY(66,whereY);writeln('|');
  end;
writeln('------------------------------------------------------------------');
kch:=p*100/n;
writeln('Качество успеваемости=',kch:0:1,'%');
write('Нажмите Enter');
readln;
clrscr;
writeln('Список студентов, имеющих задолженность:':50);
writeln;
writeln('------------------------------------------------------------------');
writeln('|   Фамилия   | Группа | Математика | Экономика| Программирование|');
writeln('------------------------------------------------------------------');
k:=0;
for i:=1 to n do
 begin
  p:=0;
  for j:=1 to 3 do
  if sp[i].oc[j]=2 then p:=p+1;
  if p>0 then
   begin
    k:=1;
    gotoXY(1,whereY);write('| ',sp[i].fam);
    gotoXY(15,whereY);write('|    ',sp[i].gr);
    gotoXY(24,whereY);write('|    ',sp[i].oc[1]);
    gotoXY(37,whereY);write('|    ',sp[i].oc[2]);
    gotoXY(48,whereY);write('|      ',sp[i].oc[3]);
    gotoXY(66,whereY);writeln('|');
   end;
 end;
writeln('------------------------------------------------------------------');
if k=0 then write('Студентов, имеющих задолженность, нет!');
readln
end.

Leave a Comment

− 4 = 6