Mateusz0230 Temat założony przez niniejszego użytkownika |
Pętla do...while » 2016-11-15 17:04:20 Witajcie po raz kolejny! Kolejny dzień, kolejna lekcja do przodu, dzisiaj przerabiałem lekcje o pętli do...while. Zadanie do tematu było następujące: Napisz prosty kalkulator, który będzie potrafił dodawać, odejmować, mnożyć i dzielić. Program ten ma działać następująco: 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. Przykładowe menu wyboru działania: [1] Dodawanie [2] Odejmowanie [3] Mnożenie [4] Dzielenie [5] Rezygnuj Zabezpiecz wcześniej napisany kalkulator przed podawaniem niepoprawnych liczb i operacji. Wykorzystaj wiedzę zdobytą z pierwszego zadania pracy domowej niniejszego rozdziału. Zabezpiecz również w analogiczny sposób przed możliwością wyboru nieprawidłowego działania. Kod, który do owego zadania napisałem: #include <iostream> int main() { int liczba; int a; int b; char rodzaj; do { { 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 >> liczba; switch( liczba ) { case 1: std::cout << "Podaj liczbe pierwsza" << std::endl; std::cin >> a; std::cout << "Podaj liczbe druga" << std::endl; std::cin >> b; std::cout << "Wynik z dodawania: " << a + b << std::endl; break; case 2: std::cout << "Podaj liczbe pierwsza" << std::endl; std::cin >> a; std::cout << "Podaj liczbe druga" << std::endl; std::cin >> b; std::cout << "Wynik z odejmowania: " << a - b << std::endl; break; case 3: std::cout << "Podaj liczbe pierwsza" << std::endl; std::cin >> a; std::cout << "Podaj liczbe druga" << std::endl; std::cin >> b; std::cout << "Wynik z mnozenia: " << a * b << std::endl; break; case 4: std::cout << "Podaj liczbe pierwsza" << std::endl; std::cin >> a; std::cout << "Podaj liczbe druga" << std::endl; std::cin >> b; std::cout << "Wynik z dzielenia: " << a / b << std::endl; break; case 5: std::cout << "Zapraszamy ponownie kiedy indziej!" << std::endl; break; } } } while( liczba != 5 ); std::cout << "Do widzenia!" << std::endl; return 0; } Mam jeden problem, mianowicie, że nie wiem jak zrobić żeby podawać na poczatku liczby, potem rodzaj działania i podanie wyniku. Z góry dziękuję jeśli ktoś znajdzie chwilkę czasu i mi pomoże. |
|
michal11 |
» 2016-11-15 18:39:17 Chodzi ci o to, żebyś nie musiał wybierać z menu jakie działanie chcesz policzyć tylko chcesz wpisywać 2 + 3 i od razu otrzymywać wynik ? |
|
MrNobody |
» 2016-11-15 18:40:55 Witaj. Tak pobieżnie... #include <iostream> int main() { int liczba; int a; int b; char rodzaj; do { std::cout << "Podaj liczbe pierwsza: "; std::cin >> a; std::cout << std::endl << "Podaj liczbe druga: "; std::cin >> b; std::cout << std::endl; { std::cout << "Jaka operacje chcesz wykonac?" << 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 >> liczba; switch( liczba ) { case 1: std::cout << "Wynik z dodawania: " << a + b << std::endl; break; case 2: std::cout << "Wynik z odejmowania: " << a - b << std::endl; break; case 3: std::cout << "Wynik z mnozenia: " << a * b << std::endl; break; case 4: std::cout << "Wynik z dzielenia: " << a / b << std::endl; break; case 5: std::cout << "Zapraszamy ponownie kiedy indziej!" << std::endl; break; } } } while( liczba != 5 ); std::cout << "Do widzenia!" << std::endl; return 0; }
... oraz dodaj po bibliotekach: Będziesz mógł zrezygnować z pisania za każdym razem "std::". |
|
michal11 |
» 2016-11-15 19:01:49 ... oraz dodaj po bibliotekach:
C/C++ using namespace std;
Będziesz mógł zrezygnować z pisania za każdym razem "std::". |
To jest akurat zły pomysł, utrwalający potencjalnie szkodliwy nawyk, już lepiej dodać na początku main using std::cout; using std::endl; using std::cin;
|
|
MrNobody |
» 2016-11-15 19:24:32 Ilu "typów", tyle opinii ;]. Jedni lubią, inni nienawidzą. Oczywiście masz rację! ale... Mateusz! pisz z "std::", bez "std::" tylko dla siebie, nie biblioteki i większe projekty! PS. Chodziło mi tu bardziej o wygodę w pisaniu kodu typu "Hello Word!" |
|
michal11 |
» 2016-11-15 19:30:51 Właśnie na pisaniu kodu typu "Hello Word!" człowiek się uczy, i jeżeli się nauczyć dawać po includach using namespace std; to później będzie tak pisał wszędzie, między innymi w plikach nagłówkowych i skoro pisał tak dla std to pomyśli, że można tak pisać dla każdego namespace'a i się robią problemy. Moim zdaniem kod który napisał @Mateusz0230 jest pod tym względem bardzo dobry, spodobało mi się to jak go pierwszy raz przeczytałem, jedyni jeżeli chce sobie ułatwić pisanie to może skorzystać z tego co napisałem wcześniej tzn. using na konkretnych klasach z std lub może napisac sobie funkcję do wypisywania i wczytywania z cout i cin ( co jest w gruncie rzeczy nie najgorszym pomysłem). |
|
MrNobody |
» 2016-11-15 19:42:06 michal11
Zgadzam się z Tobą w 100%, co już napisałem (po prostu nie pomyślałem :]) . Dla Mateusza jednak, ważniejsze jest, zrozumienie zagadnienia. Dla niego na razie program ma działać. Jeśli zadziała, w tedy może pomyśleć, co mógłby zrobić lepiej. Tak na marginesie, ciekaw jestem ile razy nie używałeś "using namespace std;", na początku nauki ;] |
|
michal11 |
» 2016-11-15 19:51:33 Ja właśnie niestety zbyt często używałem i strasznie żałuję, że nie miałem nikogo kto by mi powiedział żeby tego nie robić/robić to inaczej. |
|
« 1 » 2 |