Spoj_kalkulator - funkcja początkujący]

0

Witam,
mam pytanie, co robię źle.
Mam za zadanie napisać program z podfunkcją, w którym deklaruję funkcję wynik, a następnie ją zwracam.
Prośba o poradę.

Czy potrzeba mi tutaj int wynik?

#include <iostream>

using namespace std;

int oblicz (char znak, int a, int b)
{
int wynik;

if (znak == '+')
    cout<< a+b << endl;

else if (znak == '-')
    cout<< a-b << endl;

else if (znak == '*')
    cout<< a*b << endl;

else if (znak == '/')
    cout<< a/b << endl;

else if (znak == '%')
    cout<< a%b << endl;

return wynik;

}
int main()
{
char znak;
int a,b;

while (cin >> znak)
{
    cin >> a >> b;
    cout << oblicz(znak, a, b) << endl;
}
return 0;

}

1

jak brzmi oryginalne zadanie?
Piszesz o "funkcji wynik" ale robisz co inengo.

Oducz się drukowania w każdym punkcje. To kardynalny błąd większości początkujących. Pozornie efekt jest, ... bo się wydrukowało.
Drukuje ten fragment kodu (klient), który zamawiał, to być może aplikacja GUI, albo webowa, albo wynik jest potrzebny do dalszych obliczeń itd .... wyobrażasz sobie, ze oryginalna funkcja np sin() drukuje?

Funkcja dajmy na to "oblicz" ma robić to, jak głosi jej nazwa, czyli liczyć i zwracać wynik.
Jakbyś w tym kodzie trzymał się tej zasady, szybko być wyczaiłe, czego tam nie realizujesz, i pytania "Drukuje ten fragment kodu (klient), który zamawiał, to byc mozę apliakcja GUI, albo webowa, albo wynik jest potzrebny do dalszych obliczeń itd ....

3

Twoja funkcja nie zwraca wyniku działania tylko smaruje po ekranie po czym zwraca jakieś śmiecie.

0

Wiem o tym, dlatego napisałem o pomoc, jak to poprawnie zapisać.
Ale widzę że raczej krytykujecie, niż pomagacie :)

2
Janek_1998 napisał(a):

Wiem o tym, dlatego napisałem o pomoc, jak to poprawnie zapisać.
Ale widzę że raczej krytykujecie, niż pomagacie :)

Oczekujesz głaskania po główce? To nie ten URL.

3

Wskazanie dokładnego miejsca i przyczyny problemu wg mnie jest pomocą.
Powiedz jaką definicją pomocy operujesz ty?

0

Algorytm jest poprawny, kwestią zwrócenia zmiennej wynik, tylko nie wiem czy mam tą zmienna że zmienna znak połączyć?

1

Algorytm nie jest poprawny ponieważ nie zwraca tego co trzeba.

Dostałeś podpowiedź od @_13th_Dragon, skupiłeś się na printowaniu, a nie zwróceniu wyniku.

3

Otaczaj kod znacznikami, żeby włączyć kolorowanie składni:

#include <iostream>

using namespace std;

int oblicz (char znak, int a, int b)
{
    int wynik;

    if (znak == '+')
        cout<< a+b << endl;

    else if (znak == '-')
        cout<< a-b << endl;

    else if (znak == '*')
        cout<< a*b << endl;

    else if (znak == '/')
        cout<< a/b << endl;

    else if (znak == '%')
        cout<< a%b << endl;

    return wynik;

}
int main()
{
    char znak;
    int a,b;

    while (cin >> znak)
    {
        cin >> a >> b;
        cout << oblicz(znak, a, b) << endl;
    }
    return 0;
}

Użyj "Odpowiedz" by zboczyć jak.

  • oblicz coś wypisuje, co równocześnie próbuje robić też main.
  • oblicz zwraca wynik o nie ma nadanej wartości (wartość śmieć).

Dodaj do swojego kompilatora opcje ostrzeżenia jako błędy. Dla gcc/clang jest to: -Wall -Wextra -pedantic -Werror https://godbolt.org/z/ss81zx19P

1 użytkowników online, w tym zalogowanych: 0, gości: 1