Zwracanie wartości funkcji i powtórzenie pracy programu
Ostatnio zmodyfikowano 2015-11-14 15:18
dramatic Temat założony przez niniejszego użytkownika |
Zwracanie wartości funkcji i powtórzenie pracy programu » 2015-11-14 13:29:09 Witam napisałem coś takiego: #include <iostream> #include <math.h> using namespace std;
int suma( int a ) { int b = 0; do { b = a % 10 + b; a = a / 10; } while( a != 0 ); return b; }
int main() { int a; int b = 0; cout << "Podaj liczbe:" << endl; cin >> a; suma( a ); cout << "Suma cyfr wynosi: " << b << endl; system( "PAUSE" ); return 0; }
Funkcja "suma" ma liczyć sumę cyfr wpisanej liczby i zwracać ją do funkcji "main". Jeżeli w main mam zadeklarowane int b = 0; wyświetla mi "Suma cyfr wynosi: 0", jeżeli mam napisane "int b;" program mi się nie kompiluje i wyrzuca błąd "niezainicjowana zmienna b". Ponadto chciałbym, żeby program na końcu pytał czy powtórzyć działanie czy zakończyć pracę. Z góry dziękuję za wszelką pomoc i wskazówki. |
|
carlosmay |
» 2015-11-14 14:04:07 chciałbym, żeby program na końcu pytał czy powtórzyć działanie czy zakończyć pracę. |
życzenie wskazuje na użycie pętli. nie zapisujesz nigdzie tego co zwraca funkcja. cout << "Suma cyfr wynosi: " << b << endl;
jeśli chcesz wypisać wynik jako 'b' to przypisz zwrot z funkcji do 'b', albo 'b' przekaż do funkcji jako referencję. |
|
dramatic Temat założony przez niniejszego użytkownika |
» 2015-11-14 15:09:27 faktycznie referencja to było to czego szukałem, dzięki serdeczne! Zostawiam działający program, może komuś się przyda: #include <iostream> #include <math.h> using namespace std;
int suma( int a, int & b ) { b = 0; do { b = a % 10 + b; a = a / 10; } while( a != 0 ); return b; }
int main() { int a; int b; char znak; do { cout << "Podaj liczbe:" << endl; cin >> a; suma( a, b ); cout << "Suma cyfr wynosi: " << b << endl; cout << "Powtorzyc dzialanie programu? (t/n) "; cin >> znak; } while( znak != 'n' ); system( "PAUSE" ); return 0; } |
|
pekfos |
» 2015-11-14 15:14:03 faktycznie referencja to było to czego szukałem, dzięki serdeczne! |
No chyba właśnie nie. Po co zwracać wartość na dwa sposoby jednocześnie..? Wystarczyło po prostu użyć wartości zwracanej. Lub w ogóle wywalić b, bo w tym kodzie nie jest do niczego potrzebne. cout << "Suma cyfr wynosi: " << suma( a ) << endl;
|
|
dramatic Temat założony przez niniejszego użytkownika |
» 2015-11-14 15:18:41 Rzeczywiście też działa, a kod krótszy, dzięki :) |
|
« 1 » |