Другие языки программирования и технологии

Входные-выходные данные

Олимпиадные задачи по информатике давно стали другими, не как раньше.
Сейчас дают входной файл, выходной файл.

И что, полпрограммы должно уйти только на то, чтобы входной файл прочитать, создать выходной файл?
Если Паскаль, то обычными операторами assignfile, reset, close? Прочитав строку входных параметров нужно ещё потратить код на разбор строки, типа 5 3 67? Требуется время на выполнение 2 секунды, объём в памяти не должен превышать 16 МБ. Это сидеть с секундомером, засекать? Открыть диспетчер и смотреть объём занятой памяти?
Си:
#include <stdio.h>
main() {
int n;
...
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
...
scanf("%d", &n); // чтение целого из файла
printf("%d", n); // запись целого в файл
}

Паскаль:
var
n: integer;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
...
read(n); { чтение целочисленного значения из файла в переменную }
write(n); { запись значения целочисленной переменной в файл }
end.

Где разбор строки?

Типичное условие:
Входные данные
В первой строке входного файла INPUT.TXT задано натуральное число N - количество значений (N <= 1000). Во второй строке через пробел записаны целые значения.

Выходные данные
В единственную строку выходного файла OUTPUT.TXT нужно вывести разделенные пробелом каким-то образом обработанные значения.

Си:
#include <stdio.h>

main() {
int c, n, a[1000];

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);

// чтение входных данных
scanf("%d", &n);
for (c = 0; c < n; ++c) scanf("%d", &a[c]);

// расчетная часть
// ...

// запись выходных данных
for (c = 0; c < n; ++c) printf("%d ", a[c]);
}

Паскаль:
var
c, n: integer;
a: array [1..1000] of integer;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
readln(n);
for c := 1 to n do read(a[c]);

{ расчетная часть }
{ ...}

for c := 1 to n do write(a[c], ' ');
end.
Сергей Саулян
Сергей Саулян
63 580
Лучший ответ
Щербаков Павел Есть маленькие недочеты с СИ
Для чтения из текстового файла набора числовых переменных, достаточно оператора:

ReadLn(FileInput, FirstNumber, SecondNumber, FirdNumber);
Madiar Zakirov
Madiar Zakirov
97 475
Лет 15 назад тоже давали входной и выходной файлы
Ограничение по времени нужно чтобы вы не писали алгоритмы степенной сложности, а применяли мозг
Не плачь короче
Жесть, это где?
Логика одна и та же, либо ты сам вводишь данные и работаешь с ними, либо читаешь эти же данные из файла.

> И что, полпрограммы должно уйти только на то, чтобы входной файл прочитать, создать выходной файл?
Если основная логика -- другая половина, то это фигня а не программа)

Похожие вопросы