'else' without a previous 'if'

codepage

(ITMaster) #1

Programuje w języku C++ od niedawna i ostatnio gdy programowałem przy użyciu kursu na YouTubie. Gdy pisałem program tak jak we wskazaniach wystąpił problem.

‘else’ without a previous ‘if’

#include
#include
#include <time.h>

using namespace std;

int liczba, strzal;

int main()
{
cout << “Witej!” << endl;
cout << “Pomyslalem sobie liczbe z zakresu 1…100” << endl;
srand(time(NULL));
liczba = rand()%100+1;
cout <<liczba<<endl;

while(strzal!=liczba)
{
cout<<“Zgadnij jaka:”;
cin>>strzal;

if (strzal==liczba)
cout<<“Udalo ci sie!!!”<<endl;
cout<<“Wygrywasz!!!”<<endl;

else if(strzal<liczba)
cout<<“To za malo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;

else if (strzal>liczba)
cout<<“To za duzo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;

}
return 0;
}

Sprawdzałem ten problem n wielu forach polskich oraz zagranicznych również i na tym forum.
Próbowałem z różnymi nawiasami {} () [] wstawiać je w różne miejsca.
W pewnym momencie przepisałem nawet cły program.
Pomóżcie bardzo Proszę!!!


(mirante) #2

brakuje klamer w blokach if
powinno być:
if (strzal==liczba)
{
cout<<“Udalo ci sie!!!”<<endl;
cout<<“Wygrywasz!!!”<<endl;
}

else if(strzal<liczba)
{
cout<<“To za malo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;
}
else if (strzal>liczba)
{
cout<<“To za duzo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;
}


(Mark7) #3

A może tak :

if (wyrażenie) {
/* blok wykonany, jeśli wyrażenie jest prawdziwe /
}
/
dalsze instrukcje */
Istnieje także możliwość reakcji na nieprawdziwość wyrażenia - wtedy należy zastosować słowo kluczowe else:

if (wyrażenie) {
/* blok wykonany, jeśli wyrażenie jest prawdziwe /
} else {
/
blok wykonany, jeśli wyrażenie jest nieprawdziwe /
}
/
dalsze instrukcje */


(~MacG) #4

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Instrukcja-warunkowa-if-else/16


(ITMaster) #5

mirante dzięki wielkie w końcu ktoś mi pomógł


(ITMaster) #6

Nie wiem jak ci dziękować jeszcze raz dzięki wielkie


(hindus) #7

Ogólnie klamry nie są wymagane, wówczas wykona się tylko jedna, kolejna instrukcja. Czyli Twój kod bez klamer wyglądał dla kompilatora tak samo jak:

while(strzal!=liczba)
{
cout<<“Zgadnij jaka:”;
cin>>strzal;

if (strzal==liczba){ // niejawny nawias
cout<<“Udalo ci sie!!!”<<endl;
} // koniec niejawnego nawiasu
cout<<“Wygrywasz!!!”<<endl;

else if(strzal<liczba) // blad, else bez ifa
cout<<“To za malo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;

else if (strzal>liczba) // j.w.
cout<<“To za duzo!”<<endl;
cout<<“Sprobuj ponownie.”<<endl;

}

(Razi) #8

Najlepiej zaopatrz się w IDE formatujące kod, w Eclipse taka funkcja jest pod ctrl+shift+f, to by od razu podpowiedziało w czym jest problem.