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