Nieudane zagnieżdżanie funkcji else...if...
Ostatnio zmodyfikowano 2016-10-23 19:36
matlofot Temat założony przez niniejszego użytkownika |
Nieudane zagnieżdżanie funkcji else...if... » 2016-10-22 19:10:12 Witam, moja przyjemność z C++ zaczęła się bardzo niedawno; pisząc program sprawdzający, czy dana liczba jest parzysta bądź nie i jednocześnie sprawdzający, czy dana liczba jest podzielna przez 3, natrafiłem na dość uciążliwy i chyba uciekający mi problem. Oto kod problematycznego kawałka: if( a % 2 == 0 ) { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest parzysta i jest podzielna przez 3." else cout << "\nLiczba " << a << " jest parzysta i nie jest podzielna przez 3." } else { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest nieparzysta i jest podzielna przez 3." else cout << "\nLiczba " << a << " jest nieparzysta i nie jest podzielna przez 3." };
Podczas kompilowania program napotyka pierwszy problem w miejscu numer A, następnie w B: jest to ten sam error "expected ';' before 'else'". Nie mam pojęcia o co chodzi, sprawdzałem dokładnie średniki, klamry i nawiasy w całym kodzie, wszystko zdaje się być na swoim miejscu. Byłbym bardzo wdzięczny za pomoc. Dziękuję za sugestię, mam nadzieję, że kod jest teraz czytelniejszy. |
|
mateczek |
» 2016-10-22 19:33:21 i tak musisz sprawdzić 3 warunki. Poprawił bym twój kod ale jest niesformatowany i źle się czyta [cpp]//kod wstawiaj między znaczniki[/cpp] #include<iostream> using namespace std;
int main() { int liczba; cin >> liczba; if(( liczba % 2 == 0 ) &&( liczba % 3 == 0 ) ) { cout << "podzielna przez 3 i pazysta"; } else if(( liczba % 2 == 0 ) &&( liczba % 3 > 0 ) ) { cout << "tylko pazysta"; } else if(( liczba % 2 > 0 ) &&( liczba % 3 == 0 ) ) { cout << "tylko podzielna przez 3"; } else cout << "nie podzielna przez 3 i nie pazysta"; } |
|
pekfos |
» 2016-10-23 12:23:08 jest to ten sam error "expected ';' before 'else' |
Polecam czytać błędy, zamiast od razu kopiować je na forum. Nie stawiasz średników po instrukcjach. |
|
carlosmay |
» 2016-10-23 13:34:34 sprawdzałem dokładnie średniki
if( a % 2 == 0 ) { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest parzysta i jest podzielna przez 3." else cout << "\nLiczba " << a << " jest parzysta i nie jest podzielna przez 3." } else { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest nieparzysta i jest podzielna przez 3." else cout << "\nLiczba " << a << " jest nieparzysta i nie jest podzielna przez 3." };
|
No to ominąłeś cztery miejsca, gdzie powinny być, a wstawiłeś tam, gdzie jest zbędny. |
|
matlofot Temat założony przez niniejszego użytkownika |
» 2016-10-23 19:11:51 Dziękuję bardzo wszystkim, generalnie spodziewałem się większego roastu za taki prosty błąd, tym bardziej wielkie podziękowania za miłe traktowanie nowych użytkowników :)) Poczytałem troszkę o średnikach i nawet pojąłem, o co chodzi z moim błędem, dziękuję (niestety nie imiennie, bo nie umiem oznaczać innych użytkowników)! Na swoje usprawiedliwienie dodaję, że rozumiem, co po angielsku ten error mi sygnalizuje, a po prostu niekoniecznie umiałem pojąć w czym tkwi mój średnikowy błąd; być może teraz cały ten temat wygląda na mniejsze zaśmiecanie forum. Obecnie kod wygląda tak i chyba jest to wersja poprawna?
if( a % 2 == 0 ) { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest parzysta i jest podzielna przez 3."; else cout << "\nLiczba " << a << " jest parzysta i nie jest podzielna przez 3."; } else { if( a % 3 == 0 ) cout << "\nLiczba " << a << " jest nieparzysta i jest podzielna przez 3."; else cout << "\nLiczba " << a << " jest nieparzysta i nie jest podzielna przez 3."; }
Pozdrawiam. PS: Czy spacje przed klamrami są bardzo potrzebne? |
|
carlosmay |
» 2016-10-23 19:36:50 Czy spacje przed klamrami są bardzo potrzebne? |
Dla kompilatora nie ma to żadnego znaczenia. Dla czytelności kodu dla użytkownika, może mieć. Pisz tak, żeby dobrze się czytało. |
|
« 1 » |