Problem z programem w C++

Odpowiedz Nowy wątek
2019-06-11 19:05
0

A więc tak, jestem początkującym w programowaniu, uczę się c++. Miałem zamiar napisać coś na wzór kalkulatora, udało mi się napisać program dla dodawania, ale za każdym razem jak chce dodać jakieś liczby, program pokazuje mi wartość 0. Oto kod:

#include <iostream>

using namespace std;
 int x,y;
 char a;
 int c;

int dodawanie (int d)
 {

 return x+y;
 }

int main()
{
    cout<< "witaj w kalkulatorze"<<endl; cout<<"na jekiej liczbie chcesz operowac?"<<endl;
    cin>>x;
   cout<<"podaj druga: "<<endl;
   cin>>y;
   cout<< "jakie dzialanie chcesz wykonac?"<<endl;
   cin>>a;

 if (a=='+')
   {
        dodawanie(c);
       cout<<c<<endl;
   }

    return 0;
}

Mam nadzieje ze ktoś będzie wiedział co jest nie tak w kodzie :)

edytowany 1x, ostatnio: Franus123, 2019-06-11 19:13
Może format kodu, bo się nie da czytać. - lion137 2019-06-11 19:07

Pozostało 580 znaków

2019-06-11 19:20
0

Moim zdaniem kompilator powinien zaprotestować, że Próbujesz użyć niezainicjowanych zmiennych. W C++ jest lexical scope[0], czyli zmienne przyjmuja taka wartośc jak została im nadana najbliżej, u Ciebie powyżej maina (x i y mają wartośc zero (domyślna)), dlatego Twoja funkcja zawsze zwraca zero.
Spróbuj użyć parametrów formalnych funkcji, np.:

#include <iostream>

using namespace std;

int dodawanie (int x, int y){
    return x + y;
}

int main(){
    int x = 0, y = 0;
    char a;
    cout<< "witaj w kalkulatorze"<<endl; cout<<"na jekiej liczbie chcesz operowac?"<<endl;
    cin>>x;
    cout<<"podaj druga: "<<endl;
    cin>>y;
    cout<< "jakie dzialanie chcesz wykonac?"<<endl;
    cin>>a;

    if (a=='+'){
    cout << dodawanie(x, y) << "\n";

    }
        return 0;
}

[0] https://en.wikipedia.org/wiki/Scope_(computer_science)


edytowany 1x, ostatnio: lion137, 2019-06-11 19:28
Wielkie Dzięki :) - Franus123 2019-06-11 19:25
Proszę bardzo, jak to rozwiązuje Twój problem, to Zaakceptuj post, żeby dać sygnał innym: nie Tracie czasu, załatwione:) - lion137 2019-06-11 19:26

Pozostało 580 znaków

2019-06-11 19:36
kq
2

Nie używa niezainicjalizowanych zmiennych, bo są one globalne, a więc zainicjalizowane zerem ;​) Bezpośrednim problemem jest to, że ignoruje wartość zwracaną przez funkcję dodawanie. (co nie zmienia faktu, że zmienne globalne to zło i powinno się ich unikać)


edytowany 1x, ostatnio: kq, 2019-06-11 19:36
Oczywiście, że zmienne globalne to zuo (cały ten kod był "przedziwny":)); zwracałem uwagę na to, że nawet poleganie na domyślnej inicjalizacji jest błędem, bo może piszący, nie nadając zmiennej wartości początkowej, nie wie co robi. - lion137 2019-06-11 19:42
Myślę, że tutaj można mówić o prawdopodobieństwie graniczącym z pewnością ;​) - kq 2019-06-11 19:45
Tak, chwali się, że próbuje coś tworzyć, ale jednak, jakieś CS101 najpierw, by się przydało. - lion137 2019-06-11 19:48

Pozostało 580 znaków

2019-06-11 19:43
1
kq napisał(a):

Bezpośrednim problemem jest to, że ignoruje wartość zwracaną przez funkcję dodawanie.

Jak również kolega popełnił częsty błąd i myśli, że funkcja dodawanie zmieni wartość zmiennej c przekazanej jako argument.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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