Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zwracanie wartości funkcji i powtórzenie pracy programu

Ostatnio zmodyfikowano 2015-11-14 15:18
Autor Wiadomość
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:
C/C++
#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.
P-140107
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.

C/C++
suma( a );
 nie zapisujesz nigdzie tego co zwraca funkcja.
C/C++
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ę.
P-140109
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:

C/C++
#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;
   
}
P-140115
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.
C/C++
b = suma( a );
Lub w ogóle wywalić b, bo w tym kodzie nie jest do niczego potrzebne.
C/C++
cout << "Suma cyfr wynosi: " << suma( a ) << endl;
P-140116
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 :)
P-140117
« 1 »
  Strona 1 z 1