Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Rozdział 15, zadanie 1 - bez 'if'a'.

Ostatnio zmodyfikowano 2015-12-11 14:49
Autor Wiadomość
JakubD
Temat założony przez niniejszego użytkownika
Rozdział 15, zadanie 1 - bez 'if'a'.
» 2015-12-07 11:13:18
Działa, ale za pierwszym razem nie prosi o liczbę.
C/C++
#include <iostream>
#include <numeric>
using namespace std;
int main()
{
    int a;
   
    do {
       
        cin.clear();
        cin.ignore( 10, '\n' );
        cout << "\nPodaj liczbę ";
        cin >> a;
    }
    while( cin.fail() );
   
    cout << "liczba " << a << endl;
   
    return 0;
}
[ cpp ]
P-141562
carlosmay
» 2015-12-07 14:23:52
Jak strumień jest pusty
cin.ignore( 10, '\n' );
 czeka na wprowadzenie znaku '\n'
.
P-141569
BezPrzewodowy
» 2015-12-07 14:25:37
cin.ignore( 10, '\n' );

Funkcja ta ignoruje pierwsze 10 znaków w buforze i kończy jej działanie po enterze. U Ciebie bufor jest pusty na dzień dobry, dlatego musisz nacisnąć enter by zakończyć tą funkcję.
P-141570
JakubD
Temat założony przez niniejszego użytkownika
» 2015-12-07 14:51:29
Wiem, że czeka na '\n' - dlatego: cout << "\n...
Poza tym drobiazgiem jest ok. Powiedzcie proszę jak to dopieścić - bez if'ów.
P-141572
carlosmay
» 2015-12-07 15:04:41
Zamień pętlę DO WHILE na WHILE.
C/C++
while( !( cin >> zmienna ) )
{
    // czyszczenie
}
P-141574
BezPrzewodowy
» 2015-12-07 16:16:19
Wiem, że czeka na '\n' - dlatego:
cout << "\n "

\n z cout nie znajduje się w buforze, więc na niego nie reaguje
cin.ignore()


Powiedzcie proszę jak to dopieścić - bez if'ów.

Spróbuj wrzucić prze pętlą
a = '\n'
.
 Działa i kompiluje, jednak nie wiem na ile ta metoda jest prawidłowa i czy można ją stosować.
P-141575
JakubD
Temat założony przez niniejszego użytkownika
» 2015-12-08 15:42:58
carlosmay, nie rozumiem. Co robi !(cin >> zmienna) - zaprzecza wczytaniu ale wczytuje?
P-141613
carlosmay
» 2015-12-08 19:29:30
Wczytuje zmienną.
Kiedy wczyta obiekt std::cin przechowuje info czy udało się wczytać.
Jak udało ma wartość 1, więc trzeba zanegować aby nie wykonywać pętli
i analogicznie, gdy nie uda się wczytać.
P-141623
« 1 » 2
  Strona 1 z 2 Następna strona