Działania na liczbach zależne od operatora : + , - , * ,

0

W skrócie:
podaję dwie liczby i znak - jeśli znak to "+" to te 2 liczby które podałem są do siebie dodawane, jeśli podaję znak "*" te liczby są mnożone, a jeżeli podaję minus to są odejmowane. Jeżeli któryś z tych trzech znaków zostaje wprowadzony zwracane jest TRUE, jeśli coś innego to po prostu FALSE. I nie mam już głowy żeby dalej nad tym siedzieć. Próbowałem wszelkich kombinacji, bo myślałem że może walnąłem się ze znakami "=" albo "==", ale za każdym razem program zwraca mi tylko mnożenie niezależnie od tego jaki znak podam...

double wyrazenie (double l1, double l2, double &wynik )
{
char znak;
bool N;
if ((znak ='+') || (znak='-') ||(znak='*'))
N == true;
else N == false;
if (N == true)
{
if (znak == '+')

		wynik = l1 + l2;
	
	else if (znak == '*')
	
		wynik = l1 * l2;
	
	
	else 
	wynik = l1 - l2;
}

else return false;

}

Luknijcie proszę, co tu jest nie tak. Pozdrawiam.

0

A sam nie widzisz:
if ((znak ='+') || (znak='-') ||(znak='*'))
N == true;
else N == false;
if (N == true)
{
if (znak == '+')

Nie wspominając już o tym że nie podano wartości zmiennej znak.

0

Bo wartość zmiennej znak jest ustawiona w funkcji main, a następnie zostaje wywołana ta wyżej

1

W main to zupełnie inna zmienna, trzeba ją przekazać do funkcji, np tak:

double wyrazenie(double a,char znak,double b)
  {
   switch(znak)
     {
      case '+': return a+b;
      case '-': return a-b;
      case '*': return a*b;
     }
   return nan(); // jeżeli nie ma tego w <climits> to użyć: return log(0);
  }

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