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

Rozdział 15 - zadanie

Ostatnio zmodyfikowano 2015-09-12 13:08
Autor Wiadomość
Flozze
Temat założony przez niniejszego użytkownika
Rozdział 15 - zadanie
» 2015-09-11 12:38:32
Witam,

Proszę bardzo o pomoc ponieważ nie wiem jak rozwiązać problem...

1.
C/C++
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
   
    cout << "...:::||| Kalkulator |||:::..." << endl;
    cout << " [1] Licz, [2] Zamknij" << endl;
   
    int wybor;
    float a, b;
    char znak;
   
   
    do
    {
        cin >> wybor;
        if( wybor == 1 )
        {
            system( "cls" );
            cout << "...:::||| Licz ||:::..." << endl;
           
           
            do
            {
                cin >> a;
                cin >> znak;
                cin >> b;
               
                switch( znak )
                {
                   
                   
                case '+':
                    {
                        system( "cls" );
                        cout << a << znak << b << " = " << a + b;
                        break;
                    }
                case '-':
                    {
                        system( "cls" );
                        cout << a << znak << b << " = " << a - b;
                        break;
                    }
                case '/':
                    {
                        system( "cls" );
                        cout << a << znak << b << " = " << a / b;
                        break;
                    }
                case '*':
                    {
                        system( "cls" );
                        cout << a << znak << b << " = " << a * b;
                        break;
                    }
                    default:
                    cout << "Bledne dzialanie!" << endl;
                    break;
                }
            } while( znak != '+' || znak != '-' || znak != '/' || znak != '*' );
           
            cout << "Koniec.";
            return 0;
           
        }
       
        else if( wybor == 2 )
             return 0;
       
       
        else
             cout << "Podaj wlasciwa cyfre wyboru!" << endl;
       
       
    } while( wybor != 1 || wybor != 2 );
   
    return 0;
}

Tak wygląda mój program. Problem polega na tym, że nie kończy się pętla po wprowadzeniu znaku +,-,/ lub *. Z tego co ja tu widzę to powinno działać, więc muszę się poradzić osób mądrzejszych ;)

chodzi o ten fragment:
C/C++
} while( znak != '+' || znak != '-' || znak != '/' || znak != '*' );




2.
I jeszcze jedna sprawa. Jeśli w pierwszej petli w instrukcji wyboru wprowadze złą cyfrę to pętla wykonuje się od nowa, i wprowadzam zmienna jeszcze raz, a w tym samym przypadku jeśli wprowadzę inny typ zmiennej ( np. litere ) to pętla wykonuje się w kółko a "cin" jest pomijany. Jak temu zaradzić? Chodzi o ten przykład:
C/C++
do
{
    cin >> wybor;
    if( wybor == 1 )
    {
        ...
    }
    else if( wybor == 2 )
         return 0;
    else
         cout << "Podaj wlasciwa cyfre wyboru!" << endl;
   
} while( wybor != 1 || wybor != 2 );

return 0;




Mam nadzieję, że przekazałem problemy wystarczająco zrozumiale. Pozdrawiam.
P-137411
carlosmay
» 2015-09-11 14:12:47
Z tego co ja tu widzę to powinno działać
Nie powinno. Pomyśl, jak podasz '+' to
znak != '-'
 jest prawdą itd.

jeśli wprowadzę inny typ zmiennej ( np. litere ) to pętla wykonuje się w kółko a "cin" jest pomijany. Jak temu zaradzić?
 Kontrola strumienia, czyszczenie strumienia. Jak podasz niewłaściwy typ to nie zostanie on wczytany i zostanie w buforze póki go nie wyczyścisz. (zapętlenie)
Metody:
C/C++
std::cin.clear();
std::cin.sync(); // ew. std::cin.ignore();
P-137416
kmlkamilek
» 2015-09-11 14:49:32
P-137417
Flozze
Temat założony przez niniejszego użytkownika
» 2015-09-11 23:04:37
Racja, ze warunek z '-' bedzie prawda tylko mialem bledne przekonanie ze jesli jeden warunek bedzie falszem to wynik bedzie falszem... Dzieki bardzo za pomoc.
P-137429
carlosmay
» 2015-09-12 10:13:06
jesli jeden warunek bedzie falszem to wynik bedzie falszem
 tak jest w przypadku operatora &&.
P-137434
Flozze
Temat założony przez niniejszego użytkownika
» 2015-09-12 13:08:45
Tak, już po twoim pierwszym poscie do tego doszedlem ;) Wielkie dzięki za pomoc. Zamykam
P-137438
« 1 »
  Strona 1 z 1