Чтение из текстовых файлов : проблемы и тонкости
 Добавлено: 28.12.2012 21:52:53
Добавлено: 28.12.2012 21:52:53Хочу предложить небольшие усовершенствования программы P_31_1 из 31-ой главы редакции 12.4 от 2012-11-23.
В функции ReadFam цикл чтения символов фамилии организован посредством оператора цикла с предусловием:
Очевидно, программа должна корректно обрабатывать строки с нулевым количеством оценок. При обработке таких строк предложенный автором вариант "съедает" последние буквы фамилий учеников.
Предлагаю после цикла добавить строку:
Или вовсе заменить этот фрагмент кода на:
Как лучше - не знаю, рассудите.
Кроме того, строку:
			В функции ReadFam цикл чтения символов фамилии организован посредством оператора цикла с предусловием:
- Код: Выделить всё
- while not Eoln(InFile) and (Ord(sym)>32) do begin
 S:= S+sym;
 Read(InFile, sym);
 end;
Очевидно, программа должна корректно обрабатывать строки с нулевым количеством оценок. При обработке таких строк предложенный автором вариант "съедает" последние буквы фамилий учеников.
Предлагаю после цикла добавить строку:
- Код: Выделить всё
- while not Eoln(InFile) and (Ord(sym)>32) do begin
 S:= S+sym;
 Read(InFile, sym);
 end;
 if EoLn(InFile) then S:=S+sym;
Или вовсе заменить этот фрагмент кода на:
- Код: Выделить всё
- repeat
 S:=S+sym;
 if EoLn(InFile) then break;
 read(InFile, sym);
 until Ord(sym)<=32;
Как лучше - не знаю, рассудите.
Кроме того, строку:
- Код: Выделить всё
- Writeln(OutFile, 'Ученик не аттестован');
- Код: Выделить всё
- Writeln(OutFile, Counter:3, Fam:18, 'Ученик не аттестован');
