Poziom 2 roz. 17 zadanie 2
Ostatnio zmodyfikowano 2016-08-29 20:32
barini Temat założony przez niniejszego użytkownika |
Poziom 2 roz. 17 zadanie 2 » 2016-08-28 22:01:23 Czy mógłby ktoś dokonać analizy poniższego kodu i podpowiedzieć gdzie są błędy? Niedawno zainteresowałem się programowaniem, a mówiąc precyzyjnie od tygodnia przerabiam kurs C++ i na chwile obecną czuję się jak dziecko we mgle. Będę wdzięczny za pomoc. #include<iostream> #include<cstdlib> using namespace std; float wczytajZmienna1() { float a; while( !( cin >> a ) ) { cout << "Blad. Podaj poprawna liczbe" << endl; cin.clear(); cin.sync(); } return a; } float wczytajZmienna2() { float b; while( !( cin >> b ) ) { cout << "Blad. Podaj poprawna liczbe" << endl; cin.clear(); cin.sync(); } return b; }
int dzialanie() { int z; while( !( cin >> z ) ) { cout << "Podaj poprawne dzialanie: " << endl; cin.clear(); cin.sync(); } return z; }
void menu() { cout << "Wybierz dzialanie:" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; }
float dodawanie() { float a = wczytajZmienna1(); float b = wczytajZmienna2(); return a + b; } float odejmowanie() { float a = wczytajZmienna1(); float b = wczytajZmienna2(); return a - b; } float mnozenie() { float a = wczytajZmienna1(); float b = wczytajZmienna2(); return a * b; } float dzielenie() { float a = wczytajZmienna1(); float b = wczytajZmienna2(); cout << a / b; return a / b; } int main() { float liczba1 = wczytajZmienna1(); float liczba2 = wczytajZmienna2(); float wynik = 10; int z = dzialanie(); cout << "Witaj. Mam nadzieje, ze ten prosty kalkulator na cos sie przyda :-)" << endl; cout << "Aktualny wynik: " << wynik << endl; do { cout << "Wprowadz pierwsza liczbe: " << liczba1 << endl; cout << "Wprowadz druga liczbe: " << liczba2 << endl; menu(); while( !( cin >> z ) ) { cout << "Podaj poprawne dzialanie: " << endl; cin.clear(); cin.sync(); } switch( z ) { case 0: cout << "Wprowadziles liczbe 0. Dzialanie programu zostanie zakonczone." << endl; return 0; break; case 1: wynik = liczba1 + liczba2; cout << "Aktualny wynik: " << wynik << endl; break; case 2: wynik = liczba1 - liczba2; cout << "Aktualny wynik: " << wynik << endl; break; case 3: wynik = liczba1 * liczba2; cout << "Aktualny wynik: " << wynik << endl; break; case 4: wynik = liczba1 / liczba2; cout << "Aktualny wynik: " << wynik << endl; break; case 5: cout << "Anulacja wprowadzonych danych" << endl; break; default: cout << "Nieprawidlowe dzialanie" << endl; } } while( liczba1 != 0 && liczba2 != 0 ); cout << "Koniec"; return 0; }
|
|
carlosmay |
» 2016-08-28 22:06:38 Funkcje wykonującye działania matematyczne nie są używane (niepotrzebne). Funkcje pobierające liczby od użytkownika są takie same, więc można zostawić tylko jedną i wywołać dwa razy.
|
|
barini Temat założony przez niniejszego użytkownika |
Dziękuje za odpowiedź. » 2016-08-29 19:10:39 Dziękuje za odpowiedź. Pokombinowałem i utworzyłem poniższy kod. Już działa. Tylko nie wiem jak zabezpieczyć działanie "dzielenie" przed wprowadzeniem zera w mianowniku. Pozdrawiam #include<iostream> #include<cstdlib> using namespace std; float wczytajZmienna() { float a; while( !( cin >> a ) ) { cout << "Blad. Podaj poprawna liczbe" << endl; cin.clear(); cin.sync(); } return a; }
int dzialanie() { int c; while( !( cin >> c ) ) { cout << "Podaj poprawne dzialanie: " << endl; cin.clear(); cin.sync(); } return c; }
void menu() { cout << "Wybierz dzialanie:" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; }
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 main() { float wynik = 10; cout << "Witaj. Mam nadzieje, ze ten prosty kalkulator na cos sie przyda :-)" << endl; cout << "Aktualny wynik: " << wynik << endl; while( wynik != 0 ) { cout << "Wprowadz pierwsza liczbe: "; float liczba1 = wczytajZmienna(); cout << "Wprowadz druga liczbe: "; float liczba2 = wczytajZmienna(); menu(); int z = dzialanie(); switch( z ) { case 0: cout << "Wprowadziles liczbe 0. Dzialanie programu zostanie zakonczone." << endl; return 0; break; case 1: cout << "Aktualny wynik: " << dodawanie( liczba1, liczba2 ) << endl; break; case 2: cout << "Aktualny wynik: " << odejmowanie( liczba1, liczba2 ) << endl; break; case 3: cout << "Aktualny wynik: " << mnozenie( liczba1, liczba2 ) << endl; break; case 4: cout << "Aktualny wynik: " << dzielenie( liczba1, liczba2 ) << endl; break; case 5: cout << "Anulacja wprowadzonych danych" << endl; break; default: cout << "Nieprawidlowe dzialanie" << endl; } } cout << "Koniec"; return 0; }
|
|
Gibas11 |
» 2016-08-29 19:25:07 case 4: if( liczba2 == 0 ) { cout << "Mianownik nie może być zerem!" << endl; break; } cout << "Aktualny wynik: " << dzielenie( liczba1, liczba2 ) << endl; break;
|
|
karambaHZP |
» 2016-08-29 20:32:02 |
|
« 1 » |