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

Pętla do ... while

Ostatnio zmodyfikowano 2017-04-30 18:33
Autor Wiadomość
jkachnowicz
Temat założony przez niniejszego użytkownika
Pętla do ... while
» 2017-04-29 18:04:15
No cześć =D
Szukam pomocy w sprawie programu. Dosyć prostego, jednak nie wiem o co chodzi. Kiedy kompiluję i uruchamiam ten program i wpisuję coś innego niż liczbę (np.: q) program zawiesza się, a komputer zaczyna wydawać dziwne dźwięki. O to problematyczny kod:

#include<iostream>
int main()
{
    char correct;
    correct == 0;
    long number;
    do
    {
        if (correct >= 1)
            std::cout << "Polecenie wykonane niepoprawnie" << std::endl;
        std::cout << "Podaj liczbe" << std::endl;
        std::cout.clear();
        std::cin.sync();
        std::cin >> number;
        ++correct;
        std::cout << correct;
    } while(std::cin.fail());
    std::cout << "Liczba podana poprawnie" << std::endl;
    std::cout << number;
    return 0;
}
Bardzo proszę o pomoc. Nie mam pojęcia co się dzieje >=O.
P-160603
DejaVu
» 2017-04-30 15:06:12
Ostatnimi czasy zmieniła się implementacja cin.sync(), więc nie należy tego używać do celów opisanych w kursie (bo po prostu to nie działa już).
P-160616
jkachnowicz
Temat założony przez niniejszego użytkownika
» 2017-04-30 16:40:39
Niestety usunięcie cin.sync() nie zadziałało. Jakieś inne pomysły =)?
Wydaje mi się, że może to być coś z std::cin.fail(). Taka sama sytuacja jest w tym kodzie:

#include <iostream>

int wczytajLiczbe()
{
    int a;
    do
    {
        std::cin >> a;
        std::cout<< std::endl;
    } while (std::cin.fail());
    return a;
}

int main()
{
    std::cout << "Podaj liczbe: ";
    int liczba = wczytajLiczbe();
    std::cout << "Podales liczbe: " << liczba << std::endl;
    return 0;
}
P-160624
karambaHZP
» 2017-04-30 18:33:36
Doczytaj lekcję do końca i zastosuj
std::cin.ignore()
.
P-160627
« 1 »
  Strona 1 z 1