begin

      Fam:= ReadFam; { читаем фамилию }

      { для выравнивания столбцов добавляем пробелы }

      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, Fam:18, Cnt:8,

      Sum:14, Rating:11:1);

      end

      else       { а если оценок не было }

      Writeln(OutFile, Counter:3, Fam:18,' : Ученик не аттестован');

end;

begin       {--- Главная программа ---}

      Counter:= 0;       { обнуляем счетчик строк }

      { открываем входной файл }

      Assign(InFile,'Journal2.in'); Reset(InFile);

      { создаем выходной файл }

      Assign(OutFile,'Journal2.out'); Rewrite(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» (которая содержит по одному числу в строке) во второй вариант (будет содержать по три числа в строке).

Б) Файл с физическими данными старшеклассников содержит три колонки: фамилия, рост и вес ученика. Создайте программы для решения следующих

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату