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 » |