[Rozdział 17] Funkcje
Ostatnio zmodyfikowano 2014-11-02 22:39
luuuzik Temat założony przez niniejszego użytkownika |
[Rozdział 17] Funkcje » 2014-11-01 20:36:03 Witam, mam pytanie: Jak zagnieździć funkcję we funkcji? Przykład: #include <iostream> using namespace std;
int sprawdzanie() { do { int a, b; bool poprawnie; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); }
int dodawanie() { int a, b; cout << "Podaj pierwsza liczbe: " << endl; cin >> a; int sprawdzanie(); cout << "Podaj druga liczbe: " << endl; cin >> b; int sprawdzanie(); cout << "Suma liczb " << a << " i " << b << " jest rowna " << a + b << endl; return a + b; }
int main() { int liczba; cout << "dodaj do siebie liczby" << endl; liczba = dodawanie(); cout << "Wynik wynosi: " << liczba << endl; return 0; }
Chodzi mi tutaj, aby każda z funkcji ( dodawanie, odejmowanie, mnożenie, dzielenie) korzystała z funkcji sprawdzanie, która to będzie sprawdzać czy wczytywane liczby są prawidłowe. |
|
stryku |
» 2014-11-01 20:41:35 Funkcja sprawdzenie nie powinna być void bo nic nie zwracasz a wywołujesz ją po prostu cin >> a; sprawdzenie(); cin >> b; sprawdzenie();
Co innego jeżeli chcesz, żeby program cisnął użytkownika, aż poda prawidłową liczbę. Wtedy w funkcji sprawdzenie powinieneś mieć wczytywanie liczb dopóki są złe i zwrócenie jeżeli użytkownik poda dobrą. I wtedy wywołasz ją tak a = sprawdzenie(); I taka mała dygresja. Trochę źle to rozplanowałeś. Powinieneś mieć funkcję, która wczyta liczbę i ją zwróci, a nie tak jak to robisz teraz. |
|
luuuzik Temat założony przez niniejszego użytkownika |
» 2014-11-02 22:09:17 Lepiej? #include <iostream> using namespace std;
float dodawanie() { float a, b; bool poprawnie; do { cout << "Podaj pierwsza liczbe: " << endl; cin >> a; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); do { cout << "Podaj druga liczbe: " << endl; cin >> b; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); return a + b; }
float odejmowanie() { float a, b; bool poprawnie; do { cout << "Podaj pierwsza liczbe: " << endl; cin >> a; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); do { cout << "Podaj druga liczbe: " << endl; cin >> b; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); return a - b; }
float mnozenie() { float a, b; bool poprawnie; do { cout << "Podaj pierwsza liczbe: " << endl; cin >> a; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); do { cout << "Podaj druga liczbe: " << endl; cin >> b; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); return a * b; }
float dzielenie() { float a, b, wynik; bool poprawnie; do { cout << "Podaj pierwsza liczbe: " << endl; cin >> a; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); do { cout << "Podaj druga liczbe: " << endl; cin >> b; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); return a / b; }
int main() { int z, wynik; do { cout << "Co wybierasz?\n" << endl; cout << "[1]Dodawanie" << endl; cout << "[2]Odejmowanie" << endl; cout << "[3]Mnozenie" << endl; cout << "[4]Dzielenie" << endl; cin >> z; if( z > 0 && z < 5 ) { switch( z ) { case 1: wynik = dodawanie(); break; case 2: wynik = odejmowanie(); break; case 3: wynik = mnozenie(); break; case 4: wynik = dzielenie(); break; } } else { cout << "Blad! Wybrales z poza zakresu!\n" << endl; cin.clear(); cin.sync(); } } while( z < 0 || z > 4 || z == 0 ); cout << "Wynik wynosi: " << wynik << endl; return 0; }
|
|
stryku |
» 2014-11-02 22:32:14 Z tym czy lepiej to bym polemizował. Teraz przynajmniej osiągnąłeś to co chociałeś. Ale zobacz. Zrobisz taką funkcję sobie: float pobierzLiczbe() { float a; bool poprawnie; do { cout << "Podaj liczbe: " << endl; cin >> a; poprawnie = cin.good(); cin.clear(); cin.sync(); if( poprawnie == 1 ) { cout << "Podales prawidlowa liczbe!" << endl; } else { cout << "Blad! To nie liczba!" << endl; } } while( !poprawnie ); return a; }
i zauważ o ile krótszy będziesz miał kod. Teraz funkcja dodawanie będzie wyglądała tak float dodawanie() { float a, b; a = pobierzLiczbe(); b = pobierzLiczbe(); return a + b; }
Lepiej? :) |
|
luuuzik Temat założony przez niniejszego użytkownika |
» 2014-11-02 22:39:36 No tak :D I od razu krótszy kod jest :P Dzięki wielkie:) |
|
« 1 » |