|
|||
Особенности языков программирования и файловый ввод-выводОсобенности языков программирования и файловый ввод-вывод Поскольку часто именно файловый ввод-вывод является основной проблемой начинающих участников олимпиад, мы подготовили небольшую памятку, демонстрирующую реализацию ввода-вывода на различных языках программирования. Программа на любом языке программирования должна завершаться с кодом возврата 0. В частности, программа на C всегда должна заканчиваться оператором return 0; Имена входных и выходных файлов должны быть написаны маленькими латинскими буквами. Не забывайте закрывать выходной файл (иначе во многих языках он остается пустым). Ввод-вывод будем демонстрировать на примере следующей задачи: в файле sum.in записаны два целых числа по модулю не превышающих 32000, в файл sum.out нужно вывести их сумму. Примечание для программирующих на QBasic, Borland Pascal, Borland C: Жюри не гарантирует, что любую задачу олимпиады можно решить с использованием этих языков программирования. Pascal, Delphi Примечание для программирующих на Delphi: Имена стандартных модулей пишутся точно так же, как в документации (имеется в виду сочетание больших и маленьких букв) и только так. Например: Math, SysUtils. var a,b:longint; begin assign(input,'sum.in'); reset(input); assign(output,'sum.out'); rewrite(output); read(a,b); writeln(a+b); close(input); close(output); end. Java Программа должна находиться в единственном классе с именем Main (обязательно с большой буквы), метод main должен находиться внутри класса Main. Вложенные классы допускаются. import java.io.*;public class Main { public static void main(String[] args) throws Exception { StreamTokenizer in = new StreamTokenizer( new BufferedInputStream( new FileInputStream(new File("sum.in")))); PrintStream out = new PrintStream(new File("sum.out")); int a, b; in.nextToken(); a = (int) in.nval; in.nextToken(); b = (int) in.nval; out.println(a + b); }}C #include <stdio.h>
int main(void){ long a, b; FILE *fin, *fout; fin = fopen("sum.in", "r"); fout = fopen("sum.out", "w"); fscanf(fin, "%ld%ld", &a, &b); fprintf(fout, "%ld", a + b); fclose(fin); fclose(fout); return 0;} Примечание для программирующих на GNU C/C++: При выводе значений переменных типа long long под ОС Windows нужно использовать спецификатор %I64d, а при сдаче решений на проверку (для ОС Linux) - спецификатор %lld. "Универсальный" код, который работает правильно под обеими системами, может выглядеть так: #ifdef WIN32 printf("%I64d\n",ans); #else printf("%lld\n",ans); #endif C++ #include <fstream>
using namespace std;
int main (){ long a, b; ifstream fin ("sum.in"); ofstream fout ("sum.out"); fin >> a >> b; fout << a + b << endl; fin.close (); fout.close (); return 0;}
|
|||
|