Rozdział 15, zadanie 1 - bez 'if'a'.
Ostatnio zmodyfikowano 2015-12-11 14:49
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ę. #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 ] |
|
carlosmay |
» 2015-12-07 14:23:52 Jak strumień jest pusty cin.ignore( 10, '\n' ); czeka na wprowadzenie znaku '\n' . |
|
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ę. |
|
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. |
|
carlosmay |
» 2015-12-07 15:04:41 Zamień pętlę DO WHILE na WHILE. while( !( cin >> zmienna ) ) { }
|
|
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ć. |
|
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? |
|
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ć. |
|
« 1 » 2 |