MajorKoening Temat założony przez niniejszego użytkownika |
[Lekcja 15] Praca domowa - zadanie 2 » 2013-05-23 15:41:43 Witam! Chciałbym się dowiedzieć co robię źle #include <iostream>
int main() { int liczba, liczba1, znak; std::cout << "wpisz dwie liczby na ktorych chcesz wykonac dzialanie( nie mozna wpisywac 0" << std::endl; std::cin >> liczba; std::cin >> liczba1; if( liczba1 != 0 && liczba != 0 ) { std::cout << "Podaj rodzaj dzialania jakie chcesz wykonac" << std::endl; std::cout << "*******************************************" << std::endl; std::cout << "Wcisnij 1 zeby dodac liczbe " << liczba << " do liczby " << liczba1 << std::endl; std::cout << "Wcisnij 2 zeby odjac " << liczba << " od liczby " << liczba1 << std::endl; std::cout << "Wcisnij 3 zeby pomnozyc przez siebie " << liczba << " i " << liczba1 << std::endl; std::cout << "Wcisnij 4 zeby podzielic prze siebie " << liczba << " i " << liczba1 << std::endl; } else { std::cout << "Koniec, nie mozna wpisywac 0, sprobuj ponownie! " << std::endl; return 0; } do { std::cout << "*******************************************" << std::endl; std::cout << "Wpisz poprawnie znak" << std::endl; std::cin >> znak; switch( znak ) { case 1: std::cout << "Wynik dodawania to= " <<( liczba + liczba1 ) << std::endl; break; case 2: std::cout << "Wynik odejmowania to= " <<( liczba - liczba1 ) << std::endl; break; case 3: std::cout << "Wynik mnozenia to= " <<( liczba * liczba1 ) << std::endl; break; case 4: std::cout << "wynik dzielenia to= " <<( liczba / liczba1 ) << std::endl; } } while( znak != 1, 2, 3, 4 ); }
Otóż mój błąd polega na tym, że gdy użytkownik kalkulatora poprawnie wpisze znak i dostanie wynik, to od nowa pokazuje się, żeby wpisał poprawnie znak, gdzie popełniłem błąd. W moim rozumowaniu to było tak żeby zapętlało się to cały czas od tego "do" wtedy gdy uzytkownik wpisze znak !=1,2,3,4 Czy to powinno byc jakos inaczej? Pozdrawiam! |
|
pekfos |
» 2013-05-23 15:46:10 } while( znak != 1, 2, 3, 4 );
To z pewnością nie robi tego, czego oczekujesz. |
|
MajorKoening Temat założony przez niniejszego użytkownika |
» 2013-05-23 16:35:06 Udało mi się to naprawić ale musiałem zrobić 4 dodatkowe zmienne. Możecie powiedzieć jak to zrobić bez tworzenia tych zmiennych? #include <iostream>
int main() { int taka = 1; int taka1 = 2; int taka2 = 3; int taka3 = 4; int liczba, liczba1, znak; std::cout << "wpisz dwie liczby na ktorych chcesz wykonac dzialanie( nie mozna wpisywac 0" << std::endl; std::cin >> liczba; std::cin >> liczba1; if( liczba1 != 0 && liczba != 0 ) { std::cout << "Podaj rodzaj dzialania jakie chcesz wykonac" << std::endl; std::cout << "*******************************************" << std::endl; std::cout << "Wcisnij 1 zeby dodac liczbe " << liczba << " do liczby " << liczba1 << std::endl; std::cout << "Wcisnij 2 zeby odjac " << liczba << " od liczby " << liczba1 << std::endl; std::cout << "Wcisnij 3 zeby pomnozyc przez siebie " << liczba << " i " << liczba1 << std::endl; std::cout << "Wcisnij 4 zeby podzielic prze siebie " << liczba << " i " << liczba1 << std::endl; } else { std::cout << "Koniec, nie mozna wpisywac 0, sprobuj ponownie! " << std::endl; return 0; } do { std::cout << "*******************************************" << std::endl; std::cout << "Wpisz poprawnie znak" << std::endl; std::cin >> znak; } while( znak != taka && znak != taka1 & znak != taka2 && znak != taka3 ); switch( znak ) { case 1: std::cout << "Wynik dodawania to= " <<( liczba + liczba1 ) << std::endl; break; case 2: std::cout << "Wynik odejmowania to= " <<( liczba - liczba1 ) << std::endl; break; case 3: std::cout << "Wynik mnozenia to= " <<( liczba * liczba1 ) << std::endl; break; case 4: std::cout << "wynik dzielenia to= " <<( liczba / liczba1 ) << std::endl; } }
|
|
pekfos |
» 2013-05-23 16:51:54 Możecie powiedzieć jak to zrobić bez tworzenia tych zmiennych? |
Nie twórz ich? Masz je tu tylko po to, by trzymały jakąś niezmienną wartość, więc po co ci do tego zmienne? |
|
Berux |
» 2013-05-23 17:29:44 Zrób tak, jak napisał mój przedmówca, a w pętli zmienne zastąp odpowiednimi liczbami. |
|
Forczek |
» 2013-05-23 19:16:05 Dopatrzyłem się chyba jednego błędu: while( znak != taka && znak != taka1 & znak != taka2 && znak != taka3 ); A dokładnie w znak != taka1 & znak != taka2 brakuje jednego znaku, powinno być: znak != taka1 && znak != taka2 |
|
kamillo123567 |
» 2013-05-25 15:58:50 Ja zrobiłem to tak: #include <iostream> int main() { int a = 0; int b = 0; int c; int d = 0; int e = 1; do { std::cout << "Obecny wynik:" << d << std::endl; std::cout << "Wybierz dzialanie:" << 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.Wroc" << std::endl; std::cin >> c; std::cout << "Wpisz 'a'" << std::endl; std::cin >> a; std::cout << "Wpisz 'b'" << std::endl; std::cin >> b; if( a && b > 0 ) switch( c ) { case 1: d =( a + b ); std::cout << d << std::endl; break; case 2: d =( a - b ); std::cout << d << std::endl; break; case 3: d =( a * b ); std::cout << d << std::endl; break; case 4: d =( a / b ); std::cout << d << std::endl; break; case 5: std::cout << "Wrociles" << std::endl; break; default: std::cout << "Wrociles" << std::endl; break; } else { std::cout << "Koniec"; e = 0; } } while( e != 0 ); return 0; } Tylko nie bardzo wiem jak zrobić tak, żeby wróciło do punktu 1.go. PS. Jak zrobić tą ramkę jak powyżej(tą z kodem) |
|
pekfos |
» 2013-05-25 16:20:31 Tylko nie bardzo wiem jak zrobić tak, żeby wróciło do punktu 1.go. |
Użyj pętli. PS. Jak zrobić tą ramkę jak powyżej(tą z kodem) |
[cpp][/cpp] |
|
« 1 » 2 |