Песни о Паскале | страница 118



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

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

• отбор кандидатов для занятий баскетболом, – рост кандидата должен составлять не менее 175 см;

• поиск учеников с избыточным весом, для которых разница между ростом ученика (см) и его весом (кг) составляет менее 100.

Ваши программы должны сформировать соответствующие файлы с фамилиями и данными учеников.

Глава 32

Порядковые типы данных



Вот поле битвы, где там и сям мелькают спины бегущего противника. Разгоряченные боем, наши полки готовы гнать его хоть на край света. Но что это? Зачем полководец прекращает атаку и велит трубить сбор? Поверьте, он знает свое дело: выигрыш битвы – ещё не победа в войне. Предстоят новые сражения, и надо укрепить армию: дать отдых бойцам, накормить, подлечить и вновь построить в боевые порядки.