Nie działający program z instrukcją if else

Witam. Napisałem coś takiego:

#include 


using namespace std;


int main()

{

	int a,b;

	char liczba;


	cout<<"Podaj pierwsza liczbe "<
	cin>> a;

	cout<<"Podaj druga liczbe "<
	cin>> b;

	cout<<"Co chcesz zrobic "<
	cout<<"1 - dodawanie"<
	cin>>liczba;


	if (liczba == 1)

		cout<
	else if (liczba==2)

		cout<
	else if (liczba==3)

		cout<
	else if (liczba==4)

		if (b==0)

			cout<<"Nie dziel przez zero ";

		else 

			cout<
	else 

		cout<<"Nie wiem co podales ";


system ("pause>nul");

}[/code]

Program się kompiluje ale nie działa. Pozwala wpisać liczby ale jak coś wybiorę zawsze pokazuje ostatnie else. Próbowałem debugować ale wychodzą jakieś dziwne wartości i nie wiem nadal gdzie jest błąd.

litere porównuj z literą,

liczbe z liczbą

zmień z char liczba na int liczba

if (liczba == '1') ... [/code]

Zrobiłem wszystko i działa tak jak ostatnio czyli bez zmian, może jakieś inne rozwiązania macie? Z góry dzięki.

do liczba wczyta ci się znak ‘\n’; ponieważ po cin>>b; ‘\n’ zostanie w buforze klawiatury.

przed cin>>liczba;

daj: cin.ignore(INT_MAX,’\n’);

lub: while(cin.get()!=’\n’) {}

Zapoznaj się proszę z tą stroną i zmień tytuł na

konkretny. Inaczej temat poleci do śmietnika.

BTW.

Proszę używać znaczników code

Witaj.

Prościej było by zrealizować to za pomocą switch()

Jeśli jednak upierasz się na if i else to musisz dodać klamry (nawet sporo) :

if (liczba == 1)

cout<
else

{ if (liczba==2)

      cout<
      else 

          { if (liczba==3)

             cout<
             else 

              { if (liczba==4)

                   {

                     if (b==0)

                     cout<<"Nie dziel przez zero ";

                     else

                     cout<
                   }

                 else

                 cout<<"Nie wiem co podales ";

               }

           }

}


system ("PAUSE");

}[/code]

Nie mam pod ręką kompilatora, więc nie wiem czy nie popełniłem błędów. Poza tym ja też dopiero się uczę więc mogłem coś pomieszać.

Pozdrawiam.

Klamry tu absolutnie nie potrzebne.

Rzeczywiście, przepraszam za sianie herezji. :oops:

Napisałem tak, ponieważ miałem obiekcje jak zostanie potraktowany ostatni else w tym programie. Zainstalowałem z ciekawości Dev’a i okazuje się, że nie ma z tym problemu. Program działa zarówno z klamrami jak i bez nich.

Jeszcze raz przepraszam.

Wciąż nie działa.

A zastosowałeś się do podpowiedzi vegossj2 lub [alex]?

Najlepiej pokaż jaki kod teraz kompilujesz - bo ciężko powiedzieć jakie zmiany wprowadziłeś.

vegossj2 podał dobre rozwiązanie:

#include 


using namespace std;


int main()

{

   int a,b;

   int liczba; // <-------------- tu zmienione


   cout<<"Podaj pierwsza liczbe "<
   cin>> a;

   cout<<"Podaj druga liczbe "<
   cin>> b;

   cout<<"Co chcesz zrobic "<
   cout<<"1 - dodawanie"<
   cin>>liczba;


   if (liczba == 1)

      cout<
   else if (liczba==2)

      cout<
   else if (liczba==3)

      cout<
   else if (liczba==4)

      if (b==0)

         cout<<"Nie dziel przez zero ";

      else

         cout<
   else

      cout<<"Nie wiem co podales ";


system ("pause>nul");

}

[/code]

lub wykorzystując podpowiedź [alex] możesz napisać :

#include 


using namespace std;


int main()

{

   int a,b;

   char liczba; // zostawiasz deklaracje typu char


   cout<<"Podaj pierwsza liczbe "<
   cin>> a;

   cout<<"Podaj druga liczbe "<
   cin>> b;

   cout<<"Co chcesz zrobic "<
   cout<<"1 - dodawanie"<
   cin>>liczba;


   if (liczba == '1') // tu pamietasz o umieszczeniu znaku w ' '

      cout<
   else if (liczba=='2') // tu pamietasz o umieszczeniu znaku w ' ' 

      cout<
   else if (liczba=='3') // tu pamietasz o umieszczeniu znaku w ' '

      cout<
   else if (liczba=='4') // tu pamietasz o umieszczeniu znaku w ' '

      if (b==0)

         cout<<"Nie dziel przez zero ";

      else

         cout<
   else

      cout<<"Nie wiem co podales ";


system ("pause>nul");

}

[/code]

działa dzięki wielkie