Дан список выпускников 10 класса и оценки аттестата у каждого. Тем, у кого средний балл аттестата больше или равен 4.5, поставить в графе «эксперимент» знак «+», а остальным знак «-«. Программа должна обеспечивать ввод данных, отображение введенных данных, упорядоченное по фамилии выпускника — Pascal(Паскаль)

program test;
uses crt;
type data=record
ot:array[1..5] of integer;
ex:string;
end;
pr=record
nsn:string;
ots:data;
end;
var lp:array[1..50] of pr;
i,j,n,s,m:integer;t,c:string;
begin
clrscr;
repeat
write('vvedite kol-vo studentov (<=50) '); readln(n);
until n<=50;
for i:=1 to n do
begin
lp[i].ots.ex:='-';
for j:=1 to 5 do
begin write('vvedite otsenku ',j,' ');readln(lp[i].ots.ot[j]);end;
write('vvedite imea ');readln(lp[i].nsn);
end;
for i:=1 to n do
begin
s:=0;
for j:=1 to 5 do
s:=s+lp[i].ots.ot[j];
if s/5>=4.5 then lp[i].ots.ex:='+';
writeln('imea ',lp[i].nsn,' srednii bal=',s/5:4:2,' ',lp[i].ots.ex);
end;
readln;
end.

Вариант 2

uses crt;//модуль для работы с экраном, клавиатурой и звуком
type Tuchen=record//тип записи-ученики
           fam:string[15];//фамилия
           ocn:array[1..10]of byte;//массив из 10 оценок
           srb:real;//средний балл
           end;
var sp:array[1..50] of Tuchen;//массив записей
    n,i,j:byte;//размер масссива, счетчики циклов
    c:char;//символьная переменная для выхода из цикла ввода данных
    x:Tuchen;//переменная типа записи для сортировки обменом
begin
clrscr;
writeln('Введите данные об учениках, окончание ввода Esc:');
n:=0;//пока количество запией=0
repeat
n:=n+1;//добавляем
writeln(' Ученик',n);//вводим данные по 1 ученику
write('   Фамилия: ');readln(sp[n].fam);
writeln(' Оценки в аттестате:');
sp[n].srb:=0;//средний балл
for j:=1 to 10 do//10 оценок
 begin
  repeat//в цикле проверяем допустимость вводимых значений
  write('  Оценка ',j,'=');
  readln(sp[n].ocn[j]);
  until sp[n].ocn[j] in [2..5];//если ввели от 2 до 5, нормально, заканчиваем проверку, вводим дальше
  sp[n].srb:=sp[n].srb+sp[n].ocn[j]/10;//складываем 10 оценок, деленных на 10=средний балл
 end;
c:=readkey;//ожидаем нажатия клавиши
until c=#27;//если Esc-заканчиваем ввод, другая-продолжаем
clrscr;
{сортировка списка по фамилиям}
for i:=1 to n-1 do
for j:=i+1 to n do
if sp[i].fam>sp[j].fam then//если текущий больше встреченного впереди
 begin
  x:=sp[i];//обмениваем их местами через буфер х
  sp[i]:=sp[j];
  sp[j]:=x;
 end;
writeln('Общий список учеников:':45);
writeln;
writeln('--------------------------------------------------------');
writeln('|  Фамилия  | Оценки за четверть | Ср.балл |Эксперимент|');
writeln('--------------------------------------------------------');
for i:=1 to n  do
 begin
  gotoXY(1,whereY);//устанавливаем курсор в первую позицию текущей строки(whereY)
  write('| ',sp[i].fam);//выводим палочку и через пробел фамилию
  gotoXY(13,whereY);//в позицию 13 той же строки
  write('| ');//палочку и пробел
  for j:=1 to 10 do
  write(sp[i].ocn[j],' ');10 оценок через пробел
  gotoXY(34,whereY);//в позицию 34
  write('|  ',sp[i].srb:0:2);//выводим средний балл
  gotoXY(44,whereY);//в 44
  if sp[i].srb>4.5 then write('|    +')//если ср.балл больше 4,5, выводим +
  else write('|    -');//иначе минус
  gotoXY(56,whereY);write('|');//закрываем строку
  writeln;//переходим на новую
 end;
writeln('--------------------------------------------------------');
readln
end.

Leave a Comment

74 − 68 =