Здравствуйте!
Возникла проблема с программкой.
Вот задание:Классный руководитель XI-го класса представил годовые данные об успеваемости учащихся в таблице с n (n < 40) строками, n - количество учащихся, и m (m < 20) столбцами, m - количество школьных предметов. Элемент с индексами i, j содержит среднюю оценку ученика с номером i по предмету с номером j. Оценки являются действительными числами.
Условие: Напишите программу, которая определяет порядковые номера отличников. Напоминаем, что отличник - это ученик, у которого все оценки больше или равны 9. Программа будет содержать в себе подпрограмму, для определения является ли ученик с номером i отличником. Подпрограмма получит в качестве формального параметра индекс строки i и возвратит значение True, если ученик с номером i является отличником и значение False в противном случае.
Ввод: Текстовый файл NOTE.IN содержит на первой строке два целых числа разделённых пробелом - значения n и m. Каждая из следующих n строк будет содержать по m действительных чисел разделённых пробелом. Линия файла с номером i+1 содержит оценки ученика с номером i по m школьным предметам.
Решение будет оцениваться за:объявления типов данных и переменных; использование текстовых файлов; чтение и запись данных; описание и использование
Пример:NOTE.IN 4 3
6.00 9.50 9.00
9.50 9.66 10.00
9.75 9.25 9.66
6.50 8.75 7.75
NOTE.OUT2 3
Вывод: Результаты будут записываться в файле NOTE.OUT, следующим образом: первая строка будет содержать номера отличников, разделённые пробелом, если таких учащихся нет, тогда первая строка строка будет содержать выражение NO RESULT.
Вот моё решение:
program p1;
type mas=array[1..10,1..10]of real;
var f,g: file of real;
q,w:real;
i,j,n,m:integer;
a:mas;
function otl(i:integer):boolean;
var j:integer;
begin
for j:=1 to m do begin
if a[i,j]>=9 then otl:=True else otl:=False;
end;
end;
Begin
assign(f,'C:\PABCWork.NET\note.in.txt');
reset(f);
assign(g,'C:\PABCWork.NET\note.out.txt');
rewrite(g);
read(f,q); read(f,w);
n:=trunc(q); m:=trunc(w);
for i:=1 to n do
for j:=1 to m do begin
read(f,a[i,j]);
end;
for i:=1 to n do begin
if otl(i) then write(g,i);
end;
close(f); close(g);
write(q,' ',w);
writeln;
write(n,' ',m);
writeln;
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
readln;
End.
Вроде, компилируется без проблем, и в условиях я более менее уровен, но ошибка происходит почему-то в самом начале, при считывании
q и
w:
1.30454036513397E-76 1.55887769054702E-33
В чём заключается проблема? Где ошибка в коде?
Какое надо добавить условие для вывода "NO RESULT" в файл NOTE.OUT?
Заранее благодарен за ответ!