Kalkulator, zły wynik
Ostatnio zmodyfikowano 2015-04-17 18:39
Bubu Temat założony przez niniejszego użytkownika |
Kalkulator, zły wynik » 2015-04-13 15:40:44 Cześć, mam kolejny problem z kalkulatorem, mianowicie cały czas pokazuje mi wynik 98, nie mam pojęcia skąd to się bierze, ustawiłem już nawet każdej zmiennej wartość 0, ale to nic nie zmienia, ciągle 98. char a = 0; char b = 0; int wybor = 0; int wynik = 0;
int main() { do { cout << "Podaj liczbe a: " << endl; cin >> a; if( !isdigit( a ) ) { cout << "To nie jest liczba!" << endl; } } while( !isdigit( a ) ); do { cout << "Podaj liczbe b: " << endl; cin >> b; if( !isdigit( b ) ) { cout << "To nie jest liczba!" << endl; } } while( !isdigit( b ) ); cout << "Wybierz opcje:\n 1. Dodawanie\n 2. Odejmowanie\n 3. Mnozenie\n 4. Dzielenie\n 5. Koniec" << endl; cin >> wybor; switch( wybor ) { case 1: wynik = a + b; cout << "Wynik to: " << wynik; break; case 2: wynik = a - b; break; case 3: wynik = a * b; break; case 4: wynik = a / b; break; case 5: cout << "Zamykam"; break; default: cout << "Nie ma takiej opcji!"; } return 0; }
|
|
Monika90 |
» 2015-04-13 15:44:35 Zmienne a i b są typu char, typ char służy do przechowywania pojedynczego znaku, a nie liczby. |
|
Bubu Temat założony przez niniejszego użytkownika |
» 2015-04-13 15:49:01 Czyli nie mogę użyć w tym wypadku funkcji isdigit? |
|
michalo368 |
» 2015-04-13 15:49:34 Staraj się nie używać zmiennych globalnych ;-) |
|
wojownik266 |
» 2015-04-13 15:54:03 Spróbój zmienić typ zmiemnnych na int albo rzutuj na typ int i zobacz co się będzie działo: rzutowanie: |
|
Bubu Temat założony przez niniejszego użytkownika |
» 2015-04-13 16:03:23 Zmieniałem na int i nie zauważyłem różnicy i teraz znowu leże na samym początku, bo nie mam pojęcia jaki warunek wprowadzić do while. int a;
int main() { do { cout << "Podaj liczbe A: " << endl; cin >> a; if( !a ) { cout << "To nie jest liczba!" << endl; } } while( ???????????????????? ); return 0; }
@edit Próbowałem ze zmienną bool, ale nic nie wychodzi. Teraz program się zamyka niezależenie czy wpiszę 3 czy e, pokazuje tylko dobrą wiadomość. int a; bool poprawnaA;
int main() { do { cout << "Podaj liczbe A: " << endl; cin >> a; if( !a ) { cout << "To nie jest liczba!" << endl; poprawnaA = cin.fail(); } } while( poprawnaA != cin.fail() ); return 0; }
|
|
bragon91 |
» 2015-04-13 17:25:08 Wydaje mi się że powinno być tak: int a;
int main() { do { cout << "Podaj liczbe A: " << endl; cin >> a; if( cin.fail() ) { cout << "To nie jest liczba!" << endl; } } while( !cin.good() ); return 0; } Dodatkowo można dodać czyszczenie strumienia i błędów. int a;
int main() { do { cout << "Podaj liczbe A: " << endl; cin.clear(); cin.sync(); cin >> a; if( cin.fail() ) { cout << "To nie jest liczba!" << endl; } } while( !cin.good() ); return 0; } |
|
spike1975 |
» 2015-04-17 18:39:13 a ja zrobilem zupełnie inaczej ten kalkulator. jeżeli chodzi o ten "prosty kalkulator do działań na dwóch liczbach" z zadania domowego w rozdziale 14. po prostu wpisuje się tam dzialanie i kalkulator daje wynik. bez żadnych opcji.
nie wiem jak wklejać kod żeby było tak ładnie jak u was ale tak to wygląda:
#include <iostream> using namespace std;
int main () { int a, b; char dzialanie;
cout << "*===========================*" << endl; cout << "*Jestem prostym karkulatorem*" << endl; cout << "*===========================*" << endl; cout << endl; cout << "przekarkulujmy cos" << endl; cout << endl; cout << "wpisz dzialanie" << endl;
cin >> a; cin >> dzialanie; cin >> b; /* cout << a << endl; // do testu cout << znak << endl; // sprawdzanie co sie cout << b << endl; // wczytalo do zmiennych
*/ switch (dzialanie) {
case '+': cout << a << "+" << b << " = " << a+b << endl; break;
case '-': cout << a << "-" << b << " = " << a-b << endl; break;
case '*': cout << a << "*" << b << " = " << a*b << endl; break;
case '/': if (b==0) cout << "DZIELENIE PRZEZ 0 VERBOTEN, RAUS!!!!"; else cout << a << "/" << b << " = " << a/b << endl; break; } return 0; }
|
|
« 1 » |