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

C++ problem z zabezpieczaniem strumienia wejścia

Ostatnio zmodyfikowano 2011-07-01 21:20
Autor Wiadomość
murek
» 2011-06-30 13:30:44
petla bez/ze zlym warunkiem zakonczenia zapewne

P-35026
Dark
Temat założony przez niniejszego użytkownika
» 2011-06-30 14:04:04
A w tym programie też jest możliwość nieskończonej pętli?

C/C++
#include <iostream>
using namespace std;
int main()
{
    double wynik = 0;
    double first;
    double second;
    int number;
    bool first_stan;
    bool second_stan;
    bool number_stan;
   
    do
    {
        cout << "Wynik wynosi " << wynik << endl;
        do
        {
            cout << "Wprowadz liczbe (Wprowadz zero aby zakonczyc program) : ";
            cin >> first;
            first_stan = cin.fail();
            cin.clear();
            cin.sync();
        } while( first_stan );
       
        if( first != 0 )
        {
            do
            {
                cout << "Wprowadz druga liczbe (zero zakonczy program): ";
                cin >> second;
                second_stan = cin.fail();
                cin.clear();
                cin.sync();
            } while( second_stan );
           
            if( second != 0 )
            {
                cout << "Wybierz dzialanie:" << endl;
                cout << "1. Dodawanie" << endl;
                cout << "2. Odejmowanie" << endl;
                cout << "3. Mnozenie" << endl;
                cout << "4. Dzielenie" << endl;
                cout << "5. Zrezygnuj" << endl;
                do
                {
                    cout << "Dzialanie : ";
                    cin >> number;
                    number_stan = cin.fail();
                    cin.clear();
                    cin.sync();
                } while( number_stan &&( 1 <= number <= 5 ) );
               
                switch( number )
                {
                case 1:
                    wynik = first + second;
                    cout << first << " + " << second << " = " << wynik << endl;
                    break;
                case 2:
                    wynik = first - second;
                    cout << first << " - " << second << " = " << wynik << endl;
                    break;
                case 3:
                    wynik = first * second;
                    cout << first << " * " << second << " = " << wynik << endl;
                    break;
                case 4:
                    wynik = first / second;
                    cout << first << " / " << second << " = " << wynik << endl;
                    break;
                case 5:
                    cout << "Koniec" << endl;
                    return 0;
                    break;
                }
               
            }
            else
                 return 0;
           
        }
        else
             return 0;
       
    } while( first != 0 || second != 0 );
   
}
P-35027
murek
» 2011-06-30 14:06:15
debuguj ;]
P-35028
ison
» 2011-06-30 14:08:06
@Dark Tak
tylko, że moim zdaniem to jest czepianie się mało istotnych spraw
P-35029
Dark
Temat założony przez niniejszego użytkownika
» 2011-06-30 14:08:07
A możesz przedstawić przypadek choć jeden w którym to następuje?
P-35030
ison
» 2011-06-30 14:11:17
aaa.txt:
3 7 1
cmd:
program.exe < aaa.txt
(to samo tyczy się 3 7 1 0 gdzie ostatnie 0 powinno teoretycznie zakończyć działanie programu a nie zakańcza)

lub jeśli wolisz bez używania plików możesz użyć ctrl+d
P-35031
Elaine
» 2011-06-30 14:25:01
tylko, że moim zdaniem to jest czepianie się mało istotnych spraw
Skoro poprawna rekacja programu na dziwny input (a dziwny będzie na pewno, użytkownicy lubią podawać niepoprawne dane) to mało istnotna sprawa, to gratuluję podejścia :P
P-35032
murek
» 2011-06-30 14:48:48
A możesz przedstawić przypadek choć jeden w którym to następuje?

petla
while(true) jest przykladam petli nieskonczonej
P-35035
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona