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


(natan007) #1

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.


(Vegossj2) #2

litere porównuj z literą,

liczbe z liczbą

zmień z char liczba na int liczba


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

(natan007) #4

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


([alex]) #5

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') {}


(Asterisk) #6

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

konkretny. Inaczej temat poleci do śmietnika.

BTW.

Proszę używać znaczników code


(_Biglou_) #7

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.


([alex]) #8

Klamry tu absolutnie nie potrzebne.


(_Biglou_) #9

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.


(natan007) #10

Wciąż nie działa.


(_Biglou_) #11

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

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


(Marcin 110) #12

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]

(_Biglou_) #13

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]

(natan007) #14

działa dzięki wielkie