Top.Mail.Ru
Ответы
Аватар пользователя
10лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Программа на ПАСКАЛЕ (ЕГЭ)

Задача С4 по информатике, ЕГЭ. Помогите пожалуйста - как мне нужно исправить мою ошибку, чтобы программа работала верно? (Паскаль ABC)
---------

ЗАДАЧА: На вход про­грам­ме по­да­ют­ся све­де­ния о сдаче эк­за­ме­нов уче­ни­ка­ми 9-х клас­сов не­ко­то­рой сред­ней школы. В пер­вой стро­ке со­об­ща­ет­ся ко­ли­че­ство уче­ни­ков N, ко­то­рое не мень­ше 10, но не пре­вос­хо­дит 100, каж­дая из сле­ду­ю­щих N строк имеет сле­ду­ю­щий фор­мат: <Фа­ми­лия> <Имя> <оцен­ки>, где <Фа­ми­лия> - стро­ка, со­сто­я­щая не более чем из 20 сим­во­лов, <Имя> — стро­ка, со­сто­я­щая не более чем из 15 сим­во­лов, <оцен­ки> - через про­бел три целых числа, со­от­вет­ству­ю­щие оцен­кам по пя­ти­балль­ной си­сте­ме. <Фа­ми­лия> и <Имя>, а также <Имя> и <оцен­ки> раз­де­ле­ны одним про­бе­лом. При­мер вход­ной стро­ки:
Ива­нов Петр 4 2 4

Тре­бу­ет­ся на­пи­сать как можно более эф­фек­тив­ную про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Borland Pascal 7.0), ко­то­рая будет вы­во­дить на экран фа­ми­лии и имена не­успе­ва­ю­щих уче­ни­ков (име­ю­щих по ре­зуль­та­там эк­за­ме­нов хотя бы одну двой­ку), рас­по­ла­гая их в по­ряд­ке умень­ше­ния числа двоек.

МОЯ ПРОГРАМММА: a:array[1..100] of db;
c:char;
begin
readln (N);
for i:=1 to n do begin
while c<>' ' do begin
c:=' ';
read(c);
a[i].name:=a[i].name+c;
end;
a[i].ball:=0;
for j:=1 to 3 do begin
readln(m);
if (m=2) then
a[i].ball:=a[i].ball+1;
end;
readln;
end;
for i:=1 to n do begin
if (a[i].ball=3) then
writeln (a[i].name);
end;
for i:=1 to n do begin
if (a[i].ball=2) then
writeln (a[i].name);
end;
for i:=1 to n do begin
if (a[i].ball=1) then
writeln (a[i].name);
end;
end.

Дополнен

type db = record
name:string;
ball:integer;
end;
var i,j,m,n,k:integer;
a:array[1..100] of db;
c:char;
begin
readln (N);
for i:=1 to n do begin
for k:=1 to 2 do begin
while c<>' ' do begin
a[i].name:=a[i].name+c;
read(c);
end;
end;
read(c);
while c<>' ' do begin
a[i].name:=a[i].name+c;
read(c);
end;
a[i].ball:=0;
for j:=1 to 3 do begin
read(m);
if (m=2) then
a[i].ball:=a[i].ball+1;
end;
end;
for i:=1 to n do begin
if (a[i].ball=3) then
writeln (a[i].name);
end;
for i:=1 to n do begin
if (a[i].ball=2) then
writeln (a[i].name);
end;
for i:=1 to n do begin
if (a[i].ball=1) then
writeln (a[i].name);
end;
end.
----------
В первый раз не до конца скопировал

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
10лет

Возможно потому что не определена запись "a" и нет описания её полей.