Rozdział 15. Pętla do... while - kalkulator
Ostatnio zmodyfikowano 2014-08-20 12:08
marmal |
» 2014-07-31 19:10:01 A gdzie zabezpieczasz program przed wprowadzeniem niepoprawnych danych? Masz zdefiniowaną zmienną "dzialanie" typu int a wprowadzasz do niej literę.. Na to program nie powinien pozwolić. |
|
Saiunkoku Temat założony przez niniejszego użytkownika |
» 2014-08-01 20:54:57 Tutaj: default: cout << "Nie wybrałeś działania\n"; break;
Ze zmienną 'dzialanie' nie ma problemu. Kiedy wpisze się literę, to pętla się nie kończy, tylko wykonuje od nowa, działa to tak jak chcę. Problem jest ze zmienną 'a' właśnie taki, że nie wiem jak to zabezpieczyć w ten sposób, żeby pętla się nie kończyła, tylko tak jak w przypadku wyboru działania, wykonywała się od nowa. |
|
1aam2am1 |
» 2014-08-01 21:54:23 Wpisuje treść do zminnej string sprawdzaj czy jest tam liczba #include <iostream>
int result; sscanf( str.c_str(), "%i", & result ) == EOF
Powinno działać! |
|
elu3 |
Zadanie » 2014-08-06 17:48:45 Kluczem do rozwiązania ostatecznego zadania jest zrobienie zadania pierwszego. Do zrobienia zadań nie są potrzebne żadne dodatkowe wiadomości poza tymi, które były w poprzednich rozdziałach. Ja wykorzystałam cin.good(),if...else,switch, case,break i pętle do... while. Wszystko co zamierzałam wykonuje się, choć jako że dopiero zaczynam swoją przygodę z programowaniem to kod nie jest zbyt piękny.
|
|
gracu |
» 2014-08-08 17:27:57 zabezpieczenie przed wprowadzaniem liter (chyba najprostsza metoda) int zmienna; while( !( cin >> zmienna ) ) { cin.clear(); cin.sync(); }
|
|
mlOOdy |
kalkulator » 2014-08-19 13:40:36 Witam, miałem podobny problem jak Saiunkoku (gdy wstawiałem coś innego niż liczbę program kończył pracę) ale idąc za radą elu3 rozwiązałem go tak jak poniżej. :D Ze swojej strony chciałbym dodać, zapytać się czy można i jeśli tak to jak postawić kilka niezależnych od siebie warunków (aby co najmniej jeden z nich był spełniony myślałem żeby zastosować coś z użyciem || ale mi nie wychodziło) celem mojego zapytania jest to żeby gdy poda się zły numer case ( coś innego niż 1 lub 2 lub 3 lub 4 lub 5) program nie powracał do samego początku tylko do wypisania "Wybierz co chcesz zrobic "(...). #include <iostream> int main() { double wynik; wynik = 0; double liczba; int numer; bool a; do { do { std::cout << "obecny wynik to: " << wynik << std::endl; std::cout << "wprowadz liczbe: " << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> liczba; std::cin.good(); a = std::cin.good(); } while( a == false ); if( liczba != 0 ) { std::cout << "Wybierz co chcesz zrobic: " << 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] Rezygnuj" << std::endl; std::cin.clear(); std::cin.sync(); std::cin >> numer; switch( numer ) { case 1: wynik = wynik + liczba; break; case 2: wynik -= liczba; break; case 3: wynik = wynik * liczba; break; case 4: wynik = wynik / liczba; break; case 5: break; default: break; } } else std::cout << "Wybrales 0 : koniec programu" << std::endl; } while( liczba != 0 ); return 0; } |
|
Moorfox |
» 2014-08-19 14:52:46 Wstaw to w [c.p.p][/c.p.p](usun kropki) bo nie potrafie tego czytać jak na razie mogę tylko zasugerować: No ale ciężko powiedzieć cokolwiek o tym kodzie więc nie jestem pewien EDIT: Domyślam się, że chodziło ci jeszcze o: while( numer < 1 || numer > 5 );
Nie nawidzę takich warunków brudzą w kodzie Po za tym załóż własny temat nie odświeżasz jakiś przed 11 dni |
|
mlOOdy |
kalkulator » 2014-08-20 12:08:05 Dzięki Moorfox, właśnie o to mi chodziło :D |
|
1 « 2 » |