begin
{ для выравнивания столбцов добавляем пробелы }
while Length(Fam) < 12 do Fam:= Fam + ' ';
Sum:=0; Cnt:=0; { очищаем накопитель и счетчик оценок }
While not Eoln(InFile) do begin { пока не конец строки }
Read(InFile, N); { читаем оценку в переменную N }
Sum:= Sum+N; { накапливаем сумму баллов }
Cnt:= Cnt+1; { наращиваем счетчик оценок }
end;
if Cnt>0
then begin { если оценки в четверти были }
Rating:= Sum / Cnt; { вычисляем и печатаем ср. балл }
Writeln(OutFile, Counter:3,
Sum:14, Rating:11:1);
end
else { а если оценок не было }
Writeln(OutFile, Counter:3, Fam:18,' : Ученик не аттестован');
end;
begin {--- Главная программа ---}
Counter:= 0; { обнуляем счетчик строк }
{ открываем входной файл }
Assign(InFile,'
{ создаем выходной файл }
Assign(OutFile,'
{ выводим шапку таблицы }
Writeln(OutFile, 'Номер Фамилия Количество Сумма Средний');
Writeln(OutFile, ' оценок баллов балл');
{ пока не конец входного файла… }
while not Eof(InFile) do begin
Counter:= Counter+1; { наращиваем счетчик строк }
HandleString; { обрабатываем строку }
{ переход на следующую строку }
if not Eof(InFile) then Readln(InFile);
end;
{ закрываем оба файла }
Close(InFile); Close(OutFile);
end.
• Для чтения отдельного слова в строке файла не годятся ни оператор Readln (он прочитает всю строку), ни оператор Read, который не видит конца строки. Слово читается посимвольно оператором Read с отслеживанием признака окончания строки и других условий.
• Строку выходного файла можно формировать порциями, применяя несколько вызовов процедуры Write. Каждый такой вызов формирует часть строки и продвигает позицию записи, оставляя её в текущей строке. Для перехода к следующей строке вызывается процедура Writeln.
А) Напишите программу для преобразования первого варианта базы данных «Police.txt» (которая содержит по одному числу в строке) во второй вариант (будет содержать по три числа в строке).
Б) Файл с физическими данными старшеклассников содержит три колонки: фамилия, рост и вес ученика. Создайте программы для решения следующих