Кин игнорирует любой характер?!!!и возвращает -0 значение игнорируемого символа eof - PullRequest
0 голосов
/ 19 июня 2011

Helow :) Вот моя рекурсивная программа, которая меняет числа, введенные до eof. но он не останавливается, когда обнаруживается символ eof ^ Z : (Пока я не нажму ввод и введите символ eof в новой строке ..

пример изображения: http://www.imageupload.org/?d=F9D743081

#include <iostream>
using namespace std;
void recursive()
{
    long double n;
    if((cin>>n))
        recursive();

    cout<<n<<endl;
}
int main()
{
    recursive();
    return 0;
}

Что не так? Спасибо ....

1 Ответ

3 голосов
/ 19 июня 2011

Вы должны писать свой код как:

void recursive()
{
    long double n;
    if(cin>>n) // extra parens aren't necessary.
    {
       recursive();
       cout<<n<<endl;
   }
}

Теперь печатает только успешно прочитанные значения. Ваша программа также напечатает неудачное чтение; последнее чтение не выполнено, но ваш cout все равно пытается напечатать n.

Кстати, вам не нужно нажимать ^Z, чтобы остановить рекурсию. Вы можете нажать несколько алфавитов или другие нецифровые символы, чтобы остановить рекурсию.

Демо: http://www.ideone.com/D4XT1

...