Vendi Temat założony przez niniejszego użytkownika |
Lekcja 15 pętla do..whle. Czy można uznać to za dobrą prace domową? » 2012-03-31 12:54:46 Wykonałem ten nieszczęsny kalkulator z funkcjami które miał posiadać. #include <iostream> int main() { int dodawanie; int dodawanie2; int wybor; do { std::cout << "\nWybierz akcje:\n\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie\n0.Wyjscie" << std::endl; std::cout << "\nAkcja: "; std::cin >> wybor; std::cin.good(); { if( wybor >= 0 && std::cin.good() == 1 ) std::cout << "Dobry wybor." << std::endl; else std::cout << "Blad!" << std::endl; } switch( wybor ) { case 1: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); std::cout << "Druga: "; std::cin >> dodawanie2; std::cin.good(); if( std::cin.good() == 1 ) std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 2: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); std::cout << "Druga: "; std::cin >> dodawanie2; std::cin.good(); if( std::cin.good() == 1 ) std::cout << "Wynik: " << dodawanie - dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 3: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); std::cout << "Druga: "; std::cin >> dodawanie2; std::cin.good(); if( std::cin.good() == 1 ) std::cout << "Wynik: " << dodawanie * dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 4: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); std::cout << "Druga: "; std::cin >> dodawanie2; std::cin.good(); if( std::cin.good() == 1 ) std::cout << "Wynik: " << dodawanie / dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 0: std::cout << "Dziekujemy za prace z programem." << std::endl; break; default: std::cout << "\nBledny wybor, dostepne opcje to 1,2,3,4!" << std::endl; break; } } while( wybor != 0 ); return 0; }
Wszystko działa prawidłowo i mam pytanie, czy o takie wyjście z programu chodziło? |
|
SeaMonster131 |
» 2012-03-31 12:58:28 std::cin.good(); { if( wybor >= 0 && std::cin.good() == 1 ) std::cout << "Dobry wybor." << std::endl; else std::cout << "Blad!" << std::endl; }
Co to robi? A dokładniej ta pierwsza linijka? A po drugie - jeżeli program działa prawidłowo, tak jak ma działać, rozumiesz to co napisałeś, tzn że wykonałeś dobrze prace domową. |
|
Vendi Temat założony przez niniejszego użytkownika |
» 2012-03-31 13:34:38 1. Wypisuje obecny wynik 2. Wprowadź liczbę 3. Wybierz działanie (jeżeli liczba różna od 0) 4. Wykonaj obliczenia (jeżeli liczba różna od 0) 5. Wróć do kroku 1. 6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.
To jest punkt trzeci, tych pierwszych nie zrozumiałem. W tym chodzi o to że musi być większy od zera a nie np. -5. A to "&&" to tylko wymuszenie dobrego wyboru - operacja logiczna. I tak się nie równam więc nie myśl że Ciebie czegoś ucze.
|
|
SeaMonster131 |
» 2012-03-31 13:38:11 Chodzi mi o to: std::cin.good(); ? Bo to nic nie robi, tak samo te klamry :) W tym switch też masz taki kod (który podałem), a nie potrzebnie. |
|
Vendi Temat założony przez niniejszego użytkownika |
» 2012-03-31 14:45:06 Myślę że stworzyłem już finalną wersje tego kalkulatora, w żaden sposób nie można go zagiąć ;) #include <iostream> int main() { int dodawanie; int dodawanie2; int wybor; bool a; bool b; bool c; do { std::cout << "\nWybierz akcje:\n\n1.Dodawanie\n2.Odejmowanie\n3.Mnozenie\n4.Dzielenie\n0.Wyjscie" << std::endl; std::cout << "\nAkcja: "; std::cin >> wybor; std::cin.good(); a = std::cin.good(); { if( wybor <= 4 && std::cin.good() == 1 ) std::cout << "Dobry wybor." << std::endl; else std::cout << "Blad!" << std::endl; } switch( wybor ) { case 1: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); b = std::cin.good(); if( b == 1 ) std::cout << "Druga: "; else std::cout << "Wystapily bledy." << std::endl; std::cin >> dodawanie2; std::cin.good(); c = std::cin.good(); if( c == 1 && b == 1 ) std::cout << "Wynik: " << dodawanie + dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 2: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); b = std::cin.good(); if( b == 1 ) std::cout << "Druga: "; else std::cout << "Wystapily bledy." << std::endl; std::cin >> dodawanie2; std::cin.good(); c = std::cin.good(); if( c == 1 && b == 1 ) std::cout << "Wynik: " << dodawanie - dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 3: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); b = std::cin.good(); if( b == 1 ) std::cout << "Druga: "; else std::cout << "Wystapily bledy." << std::endl; std::cin >> dodawanie2; std::cin.good(); c = std::cin.good(); if( c == 1 && b == 1 ) std::cout << "Wynik: " << dodawanie * dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 4: std::cout << "Podaj dwie liczby: " << std::endl; std::cout << "Pierwsza: "; std::cin >> dodawanie; std::cin.good(); b = std::cin.good(); if( b == 1 ) std::cout << "Druga: "; else std::cout << "Wystapily bledy." << std::endl; std::cin >> dodawanie2; std::cin.good(); c = std::cin.good(); if( c == 1 && b == 1 ) std::cout << "Wynik: " << dodawanie / dodawanie2 << std::endl; else std::cout << "Operacja nie moze zostac wykonana." << std::endl; break; case 0: std::cout << "Dziekujemy za prace z programem." << std::endl; break; default: std::cout << "\nBledny wybor, dostepne opcje to 1,2,3,4!" << std::endl; break; } } while( a && wybor != 0 && b == 1 && c == 1 ); return 0; }
Co o nim myślicie jak na 13-nastolatka? Cały kod od podstaw jest mój. |
|
SeaMonster131 |
» 2012-03-31 15:06:35 Nie, to nic nie sprawdza :) Dopiero gdy używasz tego w instrukcji if, to wtedy faktycznie sprawdza. Program wariuje, bo nie czyścisz strumienia, w kursie masz napisane jak to zrobić oraz było już wiele innych tematów odnośnie tego ;) |
|
Vendi Temat założony przez niniejszego użytkownika |
» 2012-03-31 15:29:38 Nie czyszcze a działa, popatrz na kod u góry. |
|
SeaMonster131 |
» 2012-03-31 15:42:13 To odnosi się do Twojej poprzedniej odp, zanim edytowałeś post ;) |
|
« 1 » 2 |