Нашел сайт, где задачи тестирует сервер. Но там для ввода/вывода данных нужно использовать текстовые файлы. Подскажите, пожалуйста, как открывать эти файлы, считывать, перезаписывать. И еще, input.txt должен быть пустым? Кто может, разъясните.
Michael_Rybak
15.12.2007 4:32
На таких сайтах почти всегда есть faq с примерами решений на всех допустимых языках.
В файле input.txt - входные данные в формате, описанном в условии задачи.
Для чтения входных данных используй либо ifstream и оператор >>, либо fopen и fscanf. Для записи - либо ofstream и <<, либо fopen и fprintf.
Через fstream часто удобнее писать, но работает на порядок медленнее - если данные большие, лучше fscanf/fprintf.
Хочешь пример - дай задачку оттуда, закодю, выложу.
Если интересно, вот мой список, <пафосно>собиравшийся годами</пафосно> Если твоего сайта там нет - скажи плиз.
volvo
15.12.2007 4:33
Как обычно - объявляешь переменные и открываешь файлы:
#include <fstream> ... fstream f_in, f_out;
f_in.open("input.txt",ios::in); // для чтения f_out.open("output.txt",ios::out); // для записи
// а теперь вместо cin >> n f_in >> n; // n будет читаться из файла
То же самое и с записью в файл...
f_out << "чего-то там... " << endl;
выведет строку в файл output.txt... Только потом не забудь закрыть (f_out.close())...
Цитата
И еще, input.txt должен быть пустым?
Почему же пустым? Через него ты получаешь данные, то есть, у себя на компьютере ты должен в него внести тестовые данные, а когда загрузишь программу на сервер, она будет читать ИХ данные из ИХ файла input.txt...
Добавлено через 1 мин.
Цитата
Через fstream часто удобнее писать
Привычнее как-то...
first_day
15.12.2007 4:57
Цитата
Если интересно, вот мой список, <пафосно>собиравшийся годами</пафосно> Если твоего сайта там нет - скажи плиз.
Хороший список ) сайт из него )
Вот что у меня получилось. Сложение 2х чисел:
#include <fstream> #include <iostream> using namespace std; int main () { int a,b; fstream f_in, f_out; //для чего это? f_in.open("input.txt",ios::in); f_out.open("output.txt",ios::out); f_in>>a>>b; f_out<<a+b<<endl; (f_out.close()); return 0; }
Все корректно?
Michael_Rybak
15.12.2007 5:09
да, все правильно.
Цитата
fstream f_in, f_out; //для чего это?
как для чего? переменные объявили. это обычные переменные, как а и b.
first_day
15.12.2007 5:14
Понял, спасибо!
first_day
16.12.2007 0:12
А если через fscanf/fprintf, что подключать надо? Можно пример?
И еще, как использовать scanf/printf (если правильно написал...)