bojo240 Temat założony przez niniejszego użytkownika |
Rozdział 15. Kalkulator z pętlą - problem. » 2015-02-11 17:05:50 Witam. Po paru dniach przerwy wróciłem do nauki, doszedłem do rozdziału pętla i niestety mam lekki problem. Na początku klasycznie 12 błędów, które udało mi sie zredukować do 2, jednak z tymi dwoma mam niemały problem. Podejrzewam, że obecne działanie kalkulatora po wyeliminowaniu błedów i tak mocno bedzie odbiegać od tego jak to powinno wyglądać (i tak już teraz widzę pare rzeczy do dopracowania), ale jako początkujący musiałbym wiedzieć co i jak obecnie działa, żeby wiedzieć co należy zmienić, a jak wiadomo błędy uniemożliwiają kompilacje. Link do zadania : http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-do-while/18 Idzie oczywiście o kalkulator. Tutaj kod: #include <iostream> using namespace std; int main() { cout << "Witaj w moim pierwszym kalkulatorze."; int liczba; float a, b; do { cout << "Wybierz typ działania"; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cin >> liczba; switch( liczba ) { case 1: { cout << "Kalkulator doda do siebie dwie nastepujace liczby:" << endl; cout << "Podaj pierwsza liczbe:"; cin >> a; cout << endl; cout << "Podaj druga liczbe:"; cin >> b; cout << "Wynik dzialania jest: " << a + b << "." << endl; break; } case 2: { cout << "Kalkulator odejmie od siebie dwie nastepujace liczby:" << endl; cout << "Podaj pierwsza liczbe:"; cin >> a; cout << "Podaj druga liczbe;"; cin >> b; cout << "Wynikiem dzialania jest: " << a - b << "." << endl; break; } case 3: { cout << "Kalkulator pomnozy dwie nastepujace liczby:" << endl; cout << "Podaj pierwsza liczbe:"; cin >> a; cout << "Podaj druga liczbe:"; cin >> b; cout << "Wynik dzialania jest: " << a * b << "." << endl; break; } case 4: { cout << "Kalkulator podzieli dwie nastepujace liczby:" << endl; cout << "Podaj pierwsza liczbe:"; cin >> a; cout << "Podaj druga liczbe;"; cin >> b; cout << "Wynikiem dzialania jest: " << a / b << "." << endl; break; } } } while( b != 0 ); || liczba > 4 ); return 0; }
Ktoś mógłby wyjaśnić gdzie popełniłem błąd powodujący errorsy przy kompilowaniu? Bo dopracować działanie kalkulatora bym chciał już sam :D 2 błędy teoretycznie tylko w ostatniej linijce, choć być może po prostu zła konstrukcja całego programu je powoduje a nie linijka jako taka ;D |
|
libed |
» 2015-02-11 17:21:28 while( b != 0 ); || liczba > 4 ); Średnik. Poza tym sprawdzanie czy b != 0 powinno odbywać się wcześniej a warunek powinien być while( liczba > 0 && liczba < 5 ) Nie dało Ci do myślenia, że klepiesz identyczne linijki kodu po kilka razy? Może warto zaprzyjaźnić się z funkcjami? ;) |
|
bojo240 Temat założony przez niniejszego użytkownika |
» 2015-02-11 17:26:43 W sumie jak tylko napisałeś, to dopiero zwróciłem uwagę na nawias który mi 'psuł' linijke w tym while. Mówię, jestem początkujący, potrzebuje z 10 razy odpalić program, żeby dojść do oczekiwanego efektu :D. Anyway, dzięki wielkie za pomoc, w razie czego będę pytał ^.^ Taaa, działa tak samo jak kalkulator sprzed 2 lekcji, tak jak podejrzewałem... :D. Czas pokombinować :D |
|
bojo240 Temat założony przez niniejszego użytkownika |
» 2015-02-11 17:33:24 W sumie pętla jako taka już działa, choć jak już mówiłem, daleko odbiega od oczekiwań. Co masz na myśli mowiąc o funkcjach? |
|
Aran_swiezak |
» 2015-02-11 19:33:46 |
|
bojo240 Temat założony przez niniejszego użytkownika |
» 2015-02-11 19:58:50 No właśnie zauważyłem, że funkcja jest bodajze 2 tematy dalej, z ciekawości zajrzałem ale niewiele z niej jeszcze wyniosłem, za 2-3 razem już pewnie ogarne co i jak :P. Jeżeli idzie o kalkulator to obecnie jego kod zmieniłem z tego co było wcześniej do tego stopnia: } while( liczba > 0 && liczba < 4 && b != 0 );
Jak widać efekt rózni się od oczekiwań, obecnie jestem na poziomie ogarniania rozwiązań innych ludzi by skleić coś niby samemu ale z cudzym pomysłem :D |
|
libed |
» 2015-02-12 23:11:24 W takim razie przepraszam z tymi funkcjami. Często mi się merdają działy ;) |
|
bojo240 Temat założony przez niniejszego użytkownika |
» 2015-02-13 18:15:48 Siema, odnawiam temat. Udało mi się doprowadzić kod do takiej postaci: #include <iostream> using namespace std; int main() { float a, b; bool dzialaj = true; int opcja; cout << "Podaj pierwsza liczbe:"; cin >> a; while( dzialaj ) { cout << "Podaj kolejna liczbe:"; cin >> b; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Zakoncz" << endl; cin >> opcja; switch( opcja ) { case 1: cout << "Wynik:" << a + b << endl << endl; a = a + b; break; case 2: cout << "Wynik:" << a - b << endl << endl; a = a - b; break; case 3: cout << "Wynik:" << a * b << endl << endl; a = a * b; break; case 4: cout << "Wynik:" << a / b << endl << endl; a = a / b; break; case 5: dzialaj = false; break; default: cout << "Podales niepoprawna wartosc."; } } return 0; }
Teraz pytanie, jak wymusic zakonczenie programu przy podaniu drugiej liczby = 0? Bo rozumiem nie istnieje polecenie typu if cin b=0 terminate XD? zapewne wykorzystanie wielokrotnego przypisania w sensie b=cin.good albo cos? niestety mam problem jakos mi nie idzie uzywanie tego cin.good i cin.fail ;x |
|
« 1 » 2 |