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

Pętla do ... while (zad.dom.)

Ostatnio zmodyfikowano 2015-08-10 22:07
Autor Wiadomość
vegas793
Temat założony przez niniejszego użytkownika
Pętla do ... while (zad.dom.)
» 2015-08-10 13:15:41
Witam, własnie takie zad. domowe:

"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.  "

Oto mój program:
#include <iostream>
int main()
{
    int licz;

    std::cout << "Podaj liczbe: ";
    std::cin >> licz;

    do
    {
    if( licz == 4 )
    std::cout << "Liczba prawidlowa" << std::endl;

    else
    std::cout << "Blad";
  
    } while ( licz > 0);



    return 0;
}


Co musze zrobić żeby było dobrze? Ponieważ teraz efekt jest taki, że jak wpisze inną liczbe niz 4 to w konsoli caly czas wyświetlany jest napis "Blad" a jak wpisze 4 to non stop jest napis "Liczba prawidlowa"
P-135991
JMII89
» 2015-08-10 13:31:43
Ten program jest bez sensu i wgl nie spełnia warunków zadania.

W pętli masz wczytywać liczbę do póki wczytywanie do danego typu danych się nie powiodło . Możesz zrobić zmienną bool i przed czyszczeniem strumienia (std::cin.clear(),std::cin.sync()) i przypisać jej wynik ostatniej operacji (std::cin.good()) ale także możesz próbować wczytać liczbę dopóki std::cin.good() zwraca 0 (false). A jeśli wczytywanie się powiodło to wypisać liczbę.
P-135993
Szymon2727
» 2015-08-10 21:28:30
Nie rozumiesz. Program ma się znowu zapytać, gdy podasz zły wynik, a tutaj kończy pracę + pętla powtarza się w nieskończoność gdy podasz liczbę poniżej zero. Musisz jednak zabezpieczyć program przed podaniem char np. a - w zadaniu nie chodzi o to, by podać dokładną liczbę (chyba, że źle pamiętam, ale to raczej niemożliwe, bo przecież jest to podane w przykładach, a ten rozdział jest niewątpliwe jednym z najtrudniejszych, ale robi spory przełom). Tutaj z pomocą przychodzi pierwszy rozdział i czyszczenie bufora, a warunkiem w pętli powinna być zmienna bool.
P-136014
JMII89
» 2015-08-10 22:07:34
@Up Nie musi być bool... Obejdzie się bez tego.
P-136017
« 1 »
  Strona 1 z 1