e-olymp

Считывание данных и вывод результата. Работа с файлами.

Считывание и вывод данных. Работа с файлами.

   При решении олимпиадных задач по программированию важную роль очень часто играет правильное считывание и вывод данных. Рассмотрим этот вопрос на примере двух задач, которые в большинстве случаев в  АСМ-системах даются первыми для ознакомления со спецификой работы конкретной проверяющей системи.

   Задача1. Простая задача?

   Программа считывает двухцифровое число и выводит через пробел каждую цифру отдельно.

   Решение:

var  a, b, c : integer;  // роздел описания переменных

begin                       // начало программы

readln(a);              // считали заданное число

b := adiv10;         // операция целочисленного деления

c := amod 10;        // остаток при целочисленном делении

writeln(b,’ ’,c);       // вывели результат

end.                         // конец программы

   При работе с файлами программа будет чуть побольше. Покажем, как организовать ввод данных из файла и вывод результатов работы в файл на примере использования процедур пользователя. Файловая переменная f должна быть описана в разделе описания переменных как переменная типа text.

   Считывание данных из файла:

procedureprint;              // название процедуры  

begin                          // начало процедуры         

assign(f,’input..txt’);  // установили соответствие между файловой переменной и именем файла

reset(f);                    // открыли файл для чтения

readln(f,a);                // прочитали с файла значение переменной 

close(f);                     // закрыли файл         

end.                           // конец процедуры 

   Процедура решения задачи может быть написана, например, следующим образом:

procedure solve;       

begin                         

b := adiv10;           

c := amod 10; 

end. 

   Процедура вывода результатов работы в файл:

procedure print;       

begin                         

assign(f,’output.txt’);         

rewrite(f);                 // открыли файл для записи

writeln(f,b,’ ’,c);                 

close(f);                   

end.

  При таком подходе главная программа в большинстве случаев может иметь такой вид:

begin                         

load;           

solve;

print;                       

end.

   Задача 2. A+B Problem

   Вычислить a+b.

   Решение:

var  a, b : integer;

begin

readln(a,b);

writeln(a+b);

end.    

   В случае, когда количество входных данных наперёд не указано, следует считывать до конца файла.

   Задача 3. Задача A+B

   Посчитайте A + B.

   Решение:

var a,b : longint;

begin

readln(a,b);

writeln(a+b);

while not(eof()) do

begin

readln(a,b);

writeln(a+b);

end;

end.