2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Олимпиадное программирование, с++, ввод
Сообщение14.04.2015, 20:00 
Я точно не уверен - надо читать документацию, но возможно, что -1 (EOF) возвращается если возникнет ошибка низкоуровневого чтения, а в случае ошибки формата вы получите 0.

 
 
 
 Re: Олимпиадное программирование, с++, ввод
Сообщение15.04.2015, 10:31 
integer в сообщении #1003882 писал(а):
Только не понятно, почему если ввести символ, то происходит зацикливание, а не выход из цикла

В соответствии с документацией функция возвращает количество успешно прочитанных элементов (ещё может вернуть EOF если ничего не удалось прочитать). Поэтому, если вы хотите прочитать одно число, то надо проверять, что результат равен 1:
Используется синтаксис C++
int n;
while (scanf("%d", &n) == 1)
{
        cout << "!!!" << endl;
}

В вашем случае (при вводе символа) scanf не мог преобразовать символ в число и возвращал 0. При этом он не пропускал этот символ и при следующем вызове снова его считывал

 
 
 
 Re: Олимпиадное программирование, с++, ввод
Сообщение16.04.2015, 00:02 
Progger в сообщении #1004088 писал(а):
ещё может вернуть EOF если ничего не удалось прочитать
Судя по приведённой вами же документации - ни в коем случае не может.

 
 
 
 Re: Олимпиадное программирование, с++, ввод
Сообщение16.04.2015, 02:13 
Цитата:
if either happens before any data could be successfully read, EOF is returned.

 
 
 [ Сообщений: 19 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group