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

Rozdział 15 - zadanie 1 z pracy domowej

Ostatnio zmodyfikowano 2013-05-08 22:19
Autor Wiadomość
Gucio3012
Temat założony przez niniejszego użytkownika
Rozdział 15 - zadanie 1 z pracy domowej
» 2013-05-08 21:28:51
Witam! Może jest już późno i nie kontaktuje ale nie wiem czemu we "while" musiałem zastosować negacje, żeby uzyskać pożądany efekt(tzn. wpisanie liczby ma kończyć program, a innego znaku zataczać pętle), a nie zasnę bez odpowiedzi.
Ogólnie rozumiem to tak, że jeśli wartość do zmiennej "liczba" zostanie wczytana prawidłowo(tzn. będzie to liczba rzeczywista) to cin.good() = true, czyli 1. Nie wiem, jest już późno, więc może zapomniałem jakiejś podstawowej rzeczy :(.

Treść zadania to:

Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.

Mój kod to:
C/C++
#include <iostream>
using namespace std;
int main()
{
    double liczba;
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj liczbe." << endl;
        cin >> liczba;
    } while( !cin.good() );
   
    cout << "Podales liczbe: " << liczba << endl;
    cout << "Koniec";
    return 0;
}

Proszę o pomoc :D
P-82478
MrPoxipol
» 2013-05-08 22:01:30
Po prostu program będzie pobierał liczbę od użytkownika, dopóki ta nie będzie zgodna z wybranym typem. Ot cała filozofia ;)
P-82495
Gucio3012
Temat założony przez niniejszego użytkownika
» 2013-05-08 22:19:01
Chyba się nie zrozumieliśmy, sam program działa prawie dobrze, zastanawia mnie tylko dlaczego jeśli wpisuje liczbę rzeczywistą, gdy
while( cin.good() )
 to cały czas pyta o nowa liczbę, a gdy wpisze np. literę "d", która nie kwalifikuje się do zmiennej "liczba" to jest wszystko dobrze.

Woops! Późno już, taki głupi błąd, pętla kończy się kiedy warunek w while zwróci false, a nie true...
Przepraszam za zbędny temat, można usunąć...
P-82496
« 1 »
  Strona 1 z 1