Problem z programem w C++

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 :)

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)

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ć)

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.

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