Но пробел в кавычках трудно разглядеть. Лучше сравнивать код символа с кодом пробела (который равен 32), что и сделано внутри функции.
Теперь все готово, запустите программу. Что оказалось в выходном файле «Journal2.out»? Наверное, вот это.
Номер Фамилия Количество Сумма Средний
ученика оценок баллов балл
1 Акулова 3 12 4.0
2 Быков 4 20 5.0
3 Волков 4 18 4.5
4 Галкина 3 10 3.3
5 Крокодилкин 2 7 3.5
Если не считать кривых колонок, неплохо. Кривизну даёт разная длина фамилий учеников. Можно выровнять колонки, вычисляя спецификатор ширины в зависимости от длины фамилии. Или поступить иначе, – дополнить фамилии до одинаковой длины пробелами справа, например:
while Length(Fam) < 12 do Fam:= Fam + Char(32);
Этот оператор уместен после чтения фамилии. Окончательный вариант программы со всеми дополнениями и уточнениями представлен ниже.
{ P_31_1 – Обработка классного журнала, второй этап }
var InFile, OutFile : text; { входной и выходной файлы }
Counter: integer; { счетчик строк в файле }
{----- Функция чтения фамилии -----}
function ReadFam: string;
var sym: char;
S : string;
begin
s:=''; { очистка накопителя строки }
{ чтение символа до первой буквы }
repeat Read(InFile, sym); until Ord(sym)>32;
{ чтение последующих символов }
repeat
s:= s+sym;
if Eoln(InFile) then Break;
Read(InFile, sym);
until not ((Ord(sym)>32));
ReadFam:= S;
end;
{----- Процедура обработки строки -----}
procedure HandleString;
var N : integer; { оценка, прочитанная из файла }
Cnt: integer; { количество оценок }
Sum: integer; { сумма баллов }
Rating: Real; { средний балл }