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

[Kurs C++, Lekcja 15] Jak sprawdzić poprawność wprowadzanych danych?

Ostatnio zmodyfikowano 2011-07-21 23:00
Autor Wiadomość
Raccoon
Temat założony przez niniejszego użytkownika
[Kurs C++, Lekcja 15] Jak sprawdzić poprawność wprowadzanych danych?
» 2011-07-21 21:45:29
Witam. Mam problem z zadaniem domowym. Otóż gdy w kalkulatorze własnej roboty wpisuję literę zamiast cyfry, program wpada w szał pisania i pętla do...while przeskakuje wszystkie std::cin. Próbowałem już instrukcję warunkową if...else..., próbowałem też std::cin.fail/good. Co mam zrobić, aby wpisując literę zamiast liczby całkowitej program nie sfiksował, tylko np. wyświetlił komunikat że "nie ma takiego polecenia" itp., a pętla nie przeskakiwała strumieni std::cin? Chciałem jakoś wkleić tu kod, ale nie za bardzo wiem jak... :)
Używam programu Code::Blocks.

P.S. Nie bijcie za mocno, jak zrobiłem coś źle, jestem tutaj nowy :)

P-36525
SeaMonster131
» 2011-07-21 22:11:03
Tutaj masz wytłumaczone:
http://cpp0x.pl/forum/temat/?id=3955

Chciałem jakoś wkleić tu kod, ale nie za bardzo wiem jak... :)

[cpp] Tutaj wklejasz kod [/cpp]
P-36528
Raccoon
Temat założony przez niniejszego użytkownika
» 2011-07-21 22:50:14
oo, to wiele wyjaśnia... xD czyli będę musiał się "trochę" namęczyć z kalkulatorem... >_>
Dzięki wielkie za pomoc :)W takim razie mam inne pytanie. Gdzie w kodzie:
C/C++
#include <iostream>
int main()
{
    std::cout << "witaj!" << std::endl << std::endl << std::endl;
    long long a;
    int b;
    int c;
    do
    { std::cout << "Wybierz operacje:" << std::endl;
        std::cout << "[1] dodawanie" << std::endl;
        std::cout << "[2] odejmowanie" << std::endl;
        std::cout << "[3] mnozenie" << std::endl;
        std::cout << "[4] dzielenie" << std::endl;
        std::cout << "[5] zakoncz" << std::endl;
        std::cin >> a;
        switch( a )
        {
        case 1:
            std::cout << "Wpisz pierwsza liczbe: ";
            std::cin >> b;
            std::cout << "Wpisz druga liczbe: ";
            std::cin >> c;
            std::cout << "Wynik: " << b + c << std::endl;
            break;
        case 2:
            std::cout << "Wpisz pierwsza liczbe: ";
            std::cin >> b;
            std::cout << "Wpisz druga liczbe: ";
            std::cin >> c;
            std::cout << "Wynik: " << b - c << std::endl;
            break;
        case 3:
            std::cout << "Wpisz pierwsza liczbe: ";
            std::cin >> b;
            std::cout << "Wpisz druga liczbe: ";
            std::cin >> c;
            std::cout << "Wynik: " << b * c << std::endl;
            break;
        case 4:
            std::cout << "Wpisz pierwsza liczbe: ";
            std::cin >> b;
            std::cout << "Wpisz druga liczbe: ";
            std::cin >> c;
            std::cout << "Wynik: " << b / c << std::endl;
            break;
        case 5:
            std::cout << "Dzieki za skorzystanie z programu!";
            break;
        default:
            std::cout << "Nie ma takiego polecenia!" << std::endl;
        }
    }
    while( a != 5 );
   
    return 0;
}
mam powpisywać if, bool i pętle do...while? Do każdego case'a osobno? Czy można to jakoś z leksza ukrócić?
P-36535
jaupl
» 2011-07-21 22:54:40
Stwórz funkcje która będzie wczytywała liczbę i ją zwracała. (oczywiście zabezpieczając przed błędnym wprowadzeniem danych) i wywołuj ją w tych miejscach których potrzebujesz. :)
P-36536
DejaVu
» 2011-07-21 22:58:56
Później nauczysz się jak tworzyć kod, który można wykorzystywać wielokrotnie zmieniając tylko jego konfigurację (mowa tu o funkcjach o których wspomniał już kolega) :)
P-36537
Raccoon
Temat założony przez niniejszego użytkownika
» 2011-07-21 23:00:43
k, dziękować za pomoc :)
P-36538
« 1 »
  Strona 1 z 1