Форум программистов, компьютерный форум CyberForum.ru

scanf и printf или cin и cout - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
wwmwwm
 Аватар для wwmwwm
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 75
19.07.2013, 11:10     scanf и printf или cin и cout #1
Скажите пожалуйста,что предпочтительнее использовать на олимпиадах по программированию да и вообще : scanf и printf или cin и cout
В большинстве авторских решений задач, и решений самих олимпиадников используется scanf и printf. Но я давно выучил cin и cout и не хочу менять ничего.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include<iostream>
 
using namespace std;
 
long a,b;
int main(){
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);
  cin >> a >> b;
 cout << a+b <<;
  
  return 0;
}
Да и кстати, как в freopen определить конец файла
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2013, 11:10     scanf и printf или cin и cout
Посмотрите здесь:

как переделать с cout, cin на printf, scanf??? C++
printf и scanf против cin и cout C++
Заменить printf scanf на cout cin C++
Cin и cout заменить на scanf и printf C++
Переделать scanf, printf в cin, cout C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 11:19     scanf и printf или cin и cout #2
wwmwwm, ну вообще scanf/printf используют для скорости, но если вызвать вункцию ios_base::sync_with_stdio(0) можно достичь почти той же скорости
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
19.07.2013, 11:19     scanf и printf или cin и cout #3
Первое относится к Си, второе - к С++.
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
19.07.2013, 11:20     scanf и printf или cin и cout #4
cin cout работают через сканф и принтф. вы получите небольшие задержки на больших объемах данных из-за оберток. а вообще от задачи как всегда зависит.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 11:22     scanf и printf или cin и cout #5
Цитата Сообщение от wwmwwm Посмотреть сообщение
Да и кстати, как в freopen определить конец файла
ну смотря как читаешь, можно просто использовать feof

Добавлено через 1 минуту
а вообще прочитай это http://codeforces.ru/blog/entry/5217?locale=ru
wwmwwm
 Аватар для wwmwwm
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 75
19.07.2013, 11:22  [ТС]     scanf и printf или cin и cout #6
Цитата Сообщение от Kukurudza Посмотреть сообщение
cin cout работают через сканф и принтф. вы получите небольшие задержки на больших объемах данных из-за оберток. а вообще от задачи как всегда зависит.
Тоисть cin и cout ссылаются на printf и scanf. А на много cin и cout медленнее?
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 11:25     scanf и printf или cin и cout #7
Цитата Сообщение от wwmwwm Посмотреть сообщение
Тоисть cin и cout ссылаются на printf и scanf. А на много cin и cout медленнее?
это привязку можно отключить изпользовав функцию которую я говорил, можешь поподробнее почитать по ссылке там и сравнение есть
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 11:25     scanf и printf или cin и cout #8
Цитата Сообщение от wwmwwm Посмотреть сообщение
Тоисть cin и cout ссылаются на printf и scanf. А на много cin и cout медленнее?
Совсем не факт, cin и cout могут быть быстрее scanf/printf, потому что знают с какими типами работают (всмысле им не надо парсить строку вида "%s, %d, *[%s] etc").
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
19.07.2013, 11:27     scanf и printf или cin и cout #9
не ссылаются, а внутри себя их пользуют.
ну что значит на много медленнее? попытайтесь покрутить в циклах вывод на консоль и в файл и вы увидете что и в том и в другом случае они равны (я уверен что с погрешностью в 1-2%). в первом случае потому что вывод на консоль занимает какой то время а во втором потому что вы пишете на диск и тут уже именно эта операция занимает львиную долю времени.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 11:29     scanf и printf или cin и cout #10
Цитата Сообщение от Kukurudza Посмотреть сообщение
не ссылаются, а внутри себя их пользуют.
ну что значит на много медленнее? попытайтесь покрутить в циклах вывод на консоль и в файл и вы увидете что и в том и в другом случае они равны (я уверен что с погрешностью в 1-2%). в первом случае потому что вывод на консоль занимает какой то время а во втором потому что вы пишете на диск и тут уже именно эта операция занимает львиную долю времени.
Kukurudza, вы мое сообщение читали? говорю же можно отключить
Kukurudza
105 / 86 / 6
Регистрация: 29.08.2012
Сообщений: 539
19.07.2013, 11:30     scanf и printf или cin и cout #11
если вы спрашиваете с контекстом "а че мне использовать в лабах по программингу, где я вывожу по 10 строк текста за все время программы", то пользуйте то что удобнее. если вам надо выводить что-то большое я бы взял и провел тесты. хотя уверен, что разница между ними минимальна.

Добавлено через 37 секунд
aram_gyumri я сначала написал свое, потом ваше только обновилось в вебе
Kastaneda
19.07.2013, 11:34
  #12

Не по теме:

Цитата Сообщение от aram_gyumri Посмотреть сообщение
а вообще прочитай это http://codeforces.ru/blog/entry/5217?locale=ru
Там тест вообще не о чем не говорит. Всмысле может он и правильно сделан и цифры там адекватные, но я не могу принять это на веру. Автор нигде не написал какие ключи компиляции использовал для сборки теста. Поэтому я могу подумать, что он вообще все в дебаг режиме прогнал, отсюда такая разница между MSVS и MinGW.

Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,904
Записей в блоге: 2
Завершенные тесты: 1
19.07.2013, 11:48     scanf и printf или cin и cout #13
Цитата Сообщение от Kukurudza Посмотреть сообщение
не ссылаются, а внутри себя их пользуют.
Не факт!
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 12:03     scanf и printf или cin и cout #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
Там тест вообще не о чем не говорит. Всмысле может он и правильно сделан и цифры там адекватные, но я не могу принять это на веру. Автор нигде не написал какие ключи компиляции использовал для сборки теста. Поэтому я могу подумать, что он вообще все в дебаг режиме прогнал, отсюда такая разница между MSVS и MinGW.
Kastaneda, это чисто для олимпиад делалось и помоему автор использовал ключи которыми компилируют на кодфорсес

Добавлено через 3 минуты
Kastaneda, вот тут еще одно сравнение http://codeforces.ru/blog/entry/562
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
19.07.2013, 12:29     scanf и printf или cin и cout #15
Цитата Сообщение от aram_gyumri Посмотреть сообщение
вот тут еще одно сравнение http://codeforces.ru/blog/entry/562
Тест тоже не правильный. Первое - я только в одном месте (и то в коментах) увидел какое-то упоминание ключей компиляции, второе - сам автор подумал, что файл может лежать в кеше после первого прочтения, но сам же не учел это. Поэтому все показатели, после первого прочтения файла, можно считать неправильными.
Третье - можно же взять самому написать подобный тест, только на этот раз сделать все правильно - правильно скомпилировать и правильно запустить. И выложить результаты сюда
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 15:28     scanf и printf или cin и cout #16
Kastaneda, сейчас попробую сделать

Добавлено через 32 минуты
сделал простенький тест 10000000 int-ов, мой проц Intel Pentium B980 2.4 GHz
компилировал так
Код
g++ -O2 test.cpp -o test
вот результаты
Код
std::cin                     16.81 17.21 16.95
scanf                        2.20 2.25 2.24
std::cin с без синхронизации 10.58 10.59 10.73
меня честно говоря результаты удивили

Добавлено через 3 минуты
буду рад если еще кто-нибудь протестирует
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
19.07.2013, 17:07     scanf и printf или cin и cout #17
aram_gyumri, лучше cout, там время чисте будет.
duhast_vladisla
Заблокирован
19.07.2013, 18:09     scanf и printf или cin и cout #18
Цитата Сообщение от wwmwwm Посмотреть сообщение
scanf и printf или cin и cout
пиши на сях и забей на эту полуобъектную процедурщину си++
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
19.07.2013, 23:50     scanf и printf или cin и cout #19
Цитата Сообщение от duhast_vladisla Посмотреть сообщение
пиши на сях и забей на эту полуобъектную процедурщину си++
duhast_vladisla, я конечно тоже на си пишу, но на олимпиадах без stl туго
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2013, 00:57     scanf и printf или cin и cout
Еще ссылки по теме:

C++ Заменить printf на cout, scanf на cin
C++ Замена функций c cout на printf() и cin на scanf()
Отличие printf/scanf от cout/cin C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
20.07.2013, 00:57     scanf и printf или cin и cout #20
duhast_vladisla, не соглашусь с вами) всётаки порой эти "недообъекты" очень упрощают жизнь.
Yandex
Объявления
20.07.2013, 00:57     scanf и printf или cin и cout
Ответ Создать тему
Опции темы

Текущее время: 11:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru