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

PROBLEM Z WHILE

Ostatnio zmodyfikowano 2012-09-03 11:53
Autor Wiadomość
Kalik17
Temat założony przez niniejszego użytkownika
PROBLEM Z WHILE
» 2012-08-21 00:54:28
witam otóż mam problem z pętlą otóż chciałbym zrobić aby ten program przechodził dalej po wpisaniu tylko liczby a po wpisaniu jakiejś innej wartości tekstu litery itp. zaokrąglał się od początku. myślałem ze to będzie działać poprawnie ale po skompilowaniu i wpisaniu litery zamiast zrobić pętle i poprosić o wpisanie poprawnej liczby to wypisuje jeden pod drugim : Podaj pierwszą liczbe. Bardzo proszę o pomoc co robię nie tak.

C/C++
#include <iostream>
int main()
{
    int liczba;
   
    do
    {
        std::cout << "Podaj liczbe " << std::endl;
        std::cin >> liczba;
    }
    while( std::cin.good() != 1 );
   
    std::cout << "liczba =" << liczba;
    return 0;
}
P-63150
DejaVu
» 2012-08-21 01:08:22
Takich tematów było tu pełno. U podstaw Twojego problemu leży niezrozumienie lekcji 9 kursu (» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja):
Frazy, które należy wpisać w wyszukiwarkę google:
Twój problem dotyczy rozdziału » Kurs C++ » Poziom 2Pętla do ... while lekcja. Rozwiązania również są na forum:
Frazy, które należy wpisać w wyszukiwarkę google:
P-63151
kubek3898
» 2012-08-22 20:17:17
Po pierwsze. Po każdym obiegu pętli czyść ekran. Najlepiej funkcją system("cls") jeśli używasz Windowsa lub system("clear") jeśli Linuxa.

Nie wiem czy dobrze zrozumiałem temat, ale chodzi o to by zabezpieczyć przed wprowadzaniem liter. A więc dodaj do pętli sprawdzanie:

C/C++
if( !cin.good() )
{
    cin.clear();
    cin.sync();
}

A warunek kończący pętle to przykładowa każda liczba 0.
P-63341
Cansisti
» 2012-09-03 11:53:16
Po pierwsze - zadeklaruj sobie wcześniej jakiegoś bool-a i zaraz po instrukcji std::cin zapisz do niego std::cin.good() a potem wyczyść bufor np.

bool czyJestDobrze;
do {
 std::cout << "Podaj liczbe " << std::endl;
 std::cin >> liczba;
 czyJestDobrze = std::cin.good(); //O ile użytkownik wpisał liczbę, wartość będzie true, odwrotnie - false
 cin.clear();
 cin.sync();
} while ( !czyJestDobrze ); // Jeśli będzie false, pętla się powtórzy.
P-64293
« 1 »
  Strona 1 z 1