[C++] Rozdzial 15, zadania 2/3
Ostatnio zmodyfikowano 2016-07-11 09:57
Kano1337 Temat założony przez niniejszego użytkownika |
[C++] Rozdzial 15, zadania 2/3 » 2016-07-10 23:18:10 Witam. Wiem,że takich tematów są dziesiątki, ale prosiłbym mimo wszystko o sprawdzenie mojego kodu ;). Po długim czasie powróciłem do kursu, zacząłem go od nowa i doszedłem do Rozdziału 17(początki funkcji). Wiem,że wyszedłem nieco ponad 15 rozdział przy robieniu tych zadań, bo użyłem m.in. funkcji które były później, ale o to chodziło ;). #include <iostream> #include <cstdlib>
using namespace std;
float wprowadzanie_liczby() { float liczba; cout << "Wprowadz liczbe rzeczywista : "; cin >> liczba; while( cin.fail() ) { cin.clear(); cin.ignore(); cout << "Niepoprawny znak ! Sprobuj ponownie : "; cin >> liczba; } if( liczba == 0 ) { cout << "Koniec imprezy, dziekuje dobranoc."; exit( 0 ); } return liczba; }
float dodawanie( float a, float b ) { return a + b; }
float odejmowanie( float a, float b ) { return a - b; }
float mnozenie( float a, float b ) { return a * b; }
float dzielenie( float a, float b ) { return a / b; }
int wybor_dzialania() { cout << " \t Wybierz interesujace Cie dzialanie: " << endl; cout << " [1] Dodawanie " << endl; cout << " [2] Odejmowanie " << endl; cout << " [3] Mnozenie " << endl; cout << " [4] Dzielenie " << endl; cout << " [5] Rezygnuj " << endl; cout << "Wybieram opcje : "; int dzialanie; cin >> dzialanie; while( cin.fail() ) { cin.clear(); cin.ignore(); cout << "Niepoprawny znak, wprowadz liczbe calkowita: "; cin >> dzialanie; } return dzialanie; }
int main() { int kontynuacja; int dzialanie; float wynik_p = 4, wynik, liczba; do { cout << "Aktualny wynik " << wynik_p << endl; liczba = wprowadzanie_liczby(); do { dzialanie = wybor_dzialania(); switch( dzialanie ) { case 1: wynik = dodawanie( wynik_p, liczba ); cout << "Wynik dodawania " << wynik_p << " oraz " << liczba << " to " << wynik << endl; break; case 2: wynik = odejmowanie( wynik_p, liczba ); cout << "Wynik odejmowania " << wynik_p << " oraz " << liczba << " to " << wynik << endl; break; case 3: wynik = mnozenie( wynik_p, liczba ); cout << "Wynik mnozenia " << wynik_p << " oraz " << liczba << " to " << wynik << endl; break; case 4: wynik = dzielenie( wynik_p, liczba ); cout << "Wynik dzielenia " << wynik_p << " oraz " << liczba << " to " << wynik << endl; break; case 5: cout << "Dziekuje za skorzysatnie z mojego programu :) "; return 0; break; default: cout << "Nie ma takiej opcji, sprobuj ponownie " << endl << endl; break; } } while(( dzialanie < 1 ) ||( dzialanie > 5 ) ); wynik_p = wynik; cout << "KONTYNUOWAC? (1 - TAK/0 - NIE) : "; cin >> kontynuacja; if( kontynuacja == 0 ) { cout << "Dziekuje za skorzystanie z mojego programu :) "; return 0; } } while(( kontynuacja != 0 ) &&( dzialanie != 5 ) ); return 0; }
Program działa, moim zdaniem spełnia założenia które zostały postawione w pracy domowej.Prosiłbym o wytknięcie ew. błędów w zapisie, być może popełniłem gdzieś zbrodnie tak jak kiedyś używając goto i powinienem już wisieć na stryczku ? :) Mam nadzieję,że będziecie łaskawi i mnie oszczędzicie. |
|
Gibas11 |
» 2016-07-11 03:22:02 while(( dzialanie < 1 ) ||( dzialanie > 5 ) ); i while(( kontynuacja != 0 ) &&( dzialanie != 5 ) ); Zbędne nawiasy. if( liczba == 0 ) - nie masz gwarancji że to zadziała, liczby zmiennoprzecinkowe to czarna magia i generalnie nie porównuj ich tym operatorem. W tym temacie masz trochę o tym: http://cpp0x.pl/forum/temat/?id=20414Poza tym raczej spoko. |
|
carlosmay |
» 2016-07-11 06:11:46 |
|
Gibas11 |
» 2016-07-11 09:57:43 @Up bo nie bardzo jest sens brać w nawiasy tak proste wyrażenia, while(( dzialanie < 1 ) ||( dzialanie > 5 ) ); można zapisać jako while( dzialanie < 1 || dzialanie > 5 ); i jest to raczej przejrzystsze niż oryginał. |
|
« 1 » |