Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Люди вот работаю над сокращением количества символов в коде программы. И получается так что больше 50% затрат приходится на создание потоков для чтения из файла и запись в файл, не подскажите самую короткую запись.
1
  1  Андрей и Костя Онуфриевы, 09 февраля 2014 г. 15:36:54
      спааааааааааааааааааааасибо -1 символ из одного кода
  2  Кирилл Серый, 07 февраля 2014 г. 9:44:10
      Всем спасибо за ответы.
  3  Лукьянов Иван, 06 февраля 2014 г. 9:59:53
      > Лукьянов Иван, как раз такую конструкцию я и использую, но наверное можно короче))

Короче не получится. Если использовать сначала freopen, а затем cin, то нужно писать два "инклуда": #include <iostream> и #include <fstream>. Да и строчки с freopen сами по себе длиннее. Запись
_STD fstream I("input.txt"),O("output.txt",2);
самая короткая. Это не скомпилируется под GCC, только под VC++.
  4  Кирилл Серый, 06 февраля 2014 г. 9:29:15
      Лукьянов Иван, как раз такую конструкцию я и использую, но наверное можно короче))

Беляев Сергей Николаевич, очень интересно, но я пробовал out("output.txt", 2) но у меня была ошибка компиляции, не пойму в чем дело. А насчет не в краткости счастье я с вами согласен, но почему здесь это приветствуется.

Саня Супер Мастер, а это интересно нужно будет попробовать.
  5  Лукьянов Иван, 05 февраля 2014 г. 19:41:47
      Можно вот так:

ifstream fin("input.txt");
ofstream fout("output.txt");

Вот простой пример чтения и записи:

int a,b;
char c;
fin>>a>>b>>c;
fout<<"result "<<a*b<<" "<<c<<" "<<a+b;
  6  Беляев Сергей Николаевич, 05 февраля 2014 г. 19:41:27
      Конечно, есть короче. Вот пример решения задачи А+В:
#include <fstream>
int main(){
_STD fstream in("input.txt"), out("output.txt", 2);
int a, b;
in >> a >> b;
out << a + b;
return 0;
}
Если убрать return и сократить имена потоков, то можно еще уменьшить размер программы. Но не в краткости счастье :)
  7  Саня Супер Мастер, 05 февраля 2014 г. 19:14:45
      если есть короче - скажите..=)
  8  Саня Супер Мастер, 05 февраля 2014 г. 19:13:06
      я лично использую:
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
первая строка открывает файл на чтение(r) и "присоединяет" к потоку stdin(cin)
вторая строка открывает файл на запись(w) и "присоединяет" к потоку stdout(cout)
потом можно пользоваться cin и cout для вывода..)
  9  Кирилл Серый, 05 февраля 2014 г. 13:21:42
      Да кстати забыл уточнить речь идет о С и С++
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru