eolymp

Зчитування та виведення даних. Робота з файлами.

Зчитування та виведення даних. Робота з файлами.

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

   Задача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.