Для нового участника
олимпиады возникает непонимание в работе с «какими-то» входными и выходными данными. Любая
олимпиадная задача в формулировке
задания обязательным образом описывает формат входных и выходных данных, а составленная
программа должна считать данные, обработать и вывести результат. Обычно
чтение происходит из файла INPUT.TXT, а вывод в некоторый файл OUTPUT.TXT .
Т.е. для решения олимпиадных задач нужно уметь работать с файлами. Помимо условия
задачи, правил ввода и вывода информации на каждую задачу накладываются
ограничения на время выполнения. Отнеситесь к этому, пока как к условному требованию.
Пример
формулировки олимпиадной задачи по программированию
A+B Problem
Ограничение
времени: 1.0 секунды
Ограничение памяти: 64 МБ
Вычислите
a+b
Исходные данные
a и b
Результат
a+b
Пример
исходные данные
|
результат
|
1 5
|
6
|
Подсказка
Используйте
+
Входные данные
В
единственной строке входного файла INPUT.TXT записано два натуральных числа
через пробел, не превышающих 109.
Выходные данные
В
единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число —
сумму чисел А и В.
Пример
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
2 5
|
7
|
Эта простая
задача соответствует всем критериям правильной постановки олимпиадной задачи и позволяет
ознакомиться с системой автоматической проверки. При решении необходимо из
входного файла input.txt, расположенного в текущей папке (где и Ваша программа)
считать 2 целых числа и вывести их сумму в выходной файл output.txt.
Повторюсь, ограничения
по памяти в 64Мб и времени 1 сек. весьма условны, так как такая простая задача
потребует минимальную память и выполнится за минимальный промежуток времени . Каждая
задача имеет пример входных и выходных данных , это необходимо для однозначного
понимания содержания задачи. В данном примере в разделе отражен пример входных
данных "2 5" и выходных "7", это означает, что 2+5=7.
В мире
предпочтение отдается языку С++, но в России по-прежнему классическим языком
программирования остается Pascal. В школе программистов при нашем АГУ изучают С++.
Поэтому, чтобы получить поддержку при подготовке к олимпиаде на республиканском
уровне желательно изучить ещё и С++, ну а я помогу.
Пример
решения рассмотренной задачи о сложении двух чисел на языках Pascal и С:
var a,b:real;
begin
read(a, b);
write(a + b);
end.
на C
#include
<stdio.h>
long a,b;
int main(){
scanf("%ld%ld",&a,&b);
printf("%ld",a+b);
return 0;
}
var a, b :
longint;
Для участника
олимпиады, иногда, требуется написать программу, которая считывает некоторые
данные из одного файла, производит определенные вычисления, а результат выводит
в другой файл.
Для работы с
файлами в языке Паскаль, можно обойтись без использования файловых переменных.
Добавив две строчки кода в программу, можно перенаправить ввод данных с консоли
на ввод из файла, а вывод на экран заменить на вывод в файл.
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt');
rewrite(output);
для С
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
Ну и соответственно программы ваши примут вид:
var a,b:real;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt');
rewrite(output);
read(a, b);
write(a + b);
end.
на C
#include
<stdio.h>
long a,b;
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%ld%ld",&a,&b);
printf("%ld",a+b);
return 0;
}
{Реализация задачи №1 "A+B" на Pascal}
var a, b : longint;
ДЗ.Составить
программу сортировки в Паскаль:
Даны три
числа, расположить их в порядке убывания.
Входные
данные
В
единственной строке входного файла INPUT.TXT записаны три числа через пробел.
Каждое число– это натуральное число, не превышающее 106.
Выходные
данные
В выходной
файл OUTPUT.TXT необходимо вывести три по убыванию.
Примеры
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
100
1000 900
|
1000
900 100
|
2
|
100 90 300
|
300 100 90
|
3
|
100 30 90
|
100 90 30
|
|