dlaczego funkcja switch nie działa wtym algorytmie ?

0

mam problem z poniższym kodem, mianowicie nie działa funkcja switch, wykonywane jest tylko to co zawiera default ! Dlaczego ? kompilator niewyrzuca żadnych problemów, prosze o pomoc

#include<iostream.h>
#include<conio.h>

float kalkulator(float a,float b,char c)
{
	float wynik;
	switch(c)
	{
		case '+': wynik=a+b;
		case '-': wynik=a-b;
		case '*': wynik=a*b;
		case '/': wynik=a/b;
                                default : wynik=a+b;
	}
    return wynik;
}
void main()
{
	float a,b,wynik;
    char c;
	cout<<"\nwprowadz liczbe a: "; cin>>a;
	cout<<"\nwprowadz liczbe b: "; cin>>b;
	cout<<"\nwprowadz znak dzialania(+ - * /): "; cin>>c;
	wynik=kalkulator(a,b,c);
	cout<<"\nwynik wynosi: "<<wynik;
	getch();
}
0

Spróbuj tak:

case '+': {wynik=a+b;break;}
case '-': {wynik=a-b;break;}
case '': {wynik=ab;break;}
case '/': {wynik=a/b;break;}

0

dzięki, podziałało

0

Jeszcze chyba po switchu stawia się średnik.

Czyli:
[code]
switch(c)
{
case '+': wynik=a+b;
case '-': wynik=a-b;
case '': wynik=ab;
case '/': wynik=a/b;
default : wynik=a+b;
};
[/code]
//Czasami może nie działać program z tego powodu.

0

Tak dla jasności:

case '+': {wynik=a+b;break;}
case '-': {wynik=a-b;break;}
case '*': {wynik=a*b;break;}
case '/': {wynik=a/b;break;}

nawiasy nie są wymagane, mozna zrobic tak:

switch(c)
{
 case '+': 
   wynik=a+b;
   break;
 case '-': 
   wynik=a-b;
   break;
 case '*': 
   wynik=a*b;
   break;
 case '/': 
   wynik=a/b;
   break;
}

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