Дистанционная подготовка: неправильный ответ
неправильный ответ
от Никита Волков - Четверг 24 Июль 2014, 17:41
328. Средний балл по предметам
  не могу понять как может получаться неправильный ответ
вот код:
type point=record
fam,nam:string;
mat,fiz,inf:integer;
end;
mas=array[1..100] of point;
var s:string;
a:mas;
f,f2:text;
n,i:integer;
x,y,z:real;
procedure readsl(var a:point; s:string);
var
i:integer;
begin
i:=1;
a.fam:='';
while s[i]' ' do
begin
a.fam:=a.fam+s[i];
inc(i);
end;
inc(i);
a.nam:='';
while s[i]' ' do
begin
a.nam:=a.nam+s[i];
inc(i);
end;
inc(i);
a.mat:=0;
while s[i]' ' do
begin
a.mat:=ord(s[i])-ord('0');
inc(i);
end;
inc(i);
a.fiz:=0;
while s[i]' ' do
begin
a.fiz:=ord(s[i])-ord('0');
inc(i);
end;
inc(i);
a.inf:=0;
while s[i]' ' do
begin
a.inf:=ord(s[i])-ord('0');
inc(i);
end;
end;
begin
assign(f,'input.txt');
assign(f2,'output.txt');
reset(f);
rewrite(f2);
readln(f,n);
for i:=1 to n do
begin
readln(f,s);
readsl(a[i],s);
end;
x:=0;
y:=0;
z:=0;
for i:=1 to n do
begin
x:=x+a[i].mat;
y:=y+a[i].fiz;
z:=z+a[i].inf;
end;
x:=x/n;
y:=y/n;
z:=z/n;
writeln(f2,x,' ',y,' ',z);
close(f);
close(f2);
end.
P.S. неправильный ответ во всех тестах, но пример работает корректно
P.S.2 да,я знаю что не рационально=)
Re: неправильный ответ
от Денис Сидоров - Четверг 24 Июль 2014, 20:40
  Да он же не компилируется
Re: неправильный ответ
от Антон Карабанов - Суббота 26 Июль 2014, 03:11
  Никита, Ваша ошибка в этом блоке:
    while s[i]<>' ' do
      begin
        a.inf:=ord(s[i])-ord('0');
        inc(i);
      end;

Почему ищем пробел? Кто сказал, что он есть в конце строки?

В остальном все правильно. Вставьте
    s := s + ' ';
в начале процедуры readsl и наслаждайтесь ОК.