• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z programem w C++

0 głosów
946 wizyt
pytanie zadane 31 sierpnia 2015 w C i C++ przez Szalony Naukowiec Nowicjusz (120 p.)
#include <iostream>

using namespace std;

int wiek;

int main()
{
    cout << "Ile masz lat??" ;
    cin>> wiek;
    if (wiek<18)
    {
        cout << "Niemozesz jeszcze kupic alko"<<endl;
    }
    else
    {
        cout<< "Kupisz alko i mozesz zostac prezydentem ale nie warto";
    }
    else if ((wiek>=18)&&(wiek<35));
    {
        cout<< "Mozesz kupic alko ale nie zostaniesz prezydentem i w sumie nie warto"<<endl;
    }

    return 0;
    }

Mianowicie chodzi mi o linijke z else if i else bo niezależnie od tego jak je zamienie miejscami dostaje taki oto komunikat:

error: 'else' without a previous 'if'

I pomimo iż wiem co to znaczy to nie rozumiem czemu wyskakuje mi ten bład skoro w poradniku działało bez zarzutu :( Proszę o wyjaśnienie i z góry dzięki :)

5 odpowiedzi

+2 głosów
odpowiedź 31 sierpnia 2015 przez Mieszko I Stary wyjadacz (10,980 p.)

Masz złą kolejność else ifów. Powinno być tak:

#include <iostream>
 
using namespace std;
 
int wiek;
 
int main()
{
    cout << "Ile masz lat??" ;
    cin>> wiek;
    if (wiek<18)
    {
        cout << "Niemozesz jeszcze kupic alko"<<endl;
    }
    else if ((wiek>=18)&&(wiek<35));
    {
        cout<< "Mozesz kupic alko ale nie zostaniesz prezydentem i w sumie nie warto"<<        endl;
    }
    else
    {
        cout<< "Kupisz alko i mozesz zostac prezydentem ale nie warto";
    }
    return 0;
}

 Pozdrawiam.

0 głosów
odpowiedź 31 sierpnia 2015 przez Tomasz90 Nałogowiec (25,140 p.)
masz else if i nie jest to poprzedzone ifem tylko samym elsem

Dozwolone jest

if(warunek1) {

} else if(warunek2) {

} else {

}

 

lub

if(warunek1) {

} else {

}
0 głosów
odpowiedź 31 sierpnia 2015 przez tytanik2011 Użytkownik (930 p.)
Próbowałeś w drugim else dać else if (wiek>=18) Wydaje mi się że wtedy może działać ale moge się mylić.
0 głosów
odpowiedź 31 sierpnia 2015 przez Adrian1999 Nałogowiec (34,570 p.)
bo liczy się kolejność spójrz if wykona się zawsze else if wykona się jeżeli if przed nim się nie wywoła, a else to w ogóle wywoła się jeżeli nic innego się nie wywoła dlatego ważne jest umiejscowienie 1. Zwykle if 2. Els ify w zależności od ilości kodu, 3. Else

Np if(wiek==10) cout<<masz 10 lat else if( to sie wykona jezeli sie nie spelni warunek w ifie pierwszym) (wiek==11) cout<<"masz 11lat" else cout<<"twój wiek został nieokreślony w programie";

wybacz że pisane tak na sucho
0 głosów
odpowiedź 31 sierpnia 2015 przez criss Mędrzec (172,570 p.)
else wykonuje się jeśli nic innego się nie wykona, else ify wykonują się po kolei jeśli poprzedni warunek się nie wykonał. Także else ZAWSZE powinien być na końcu, bo żaden else if po nim się nie wykona. Kompilator to wykrywa i wyrzuca error.

Podobne pytania

0 głosów
2 odpowiedzi 3,272 wizyt
pytanie zadane 8 stycznia 2017 w C i C++ przez HiveMind Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 8,902 wizyt
0 głosów
4 odpowiedzi 286 wizyt
pytanie zadane 10 września 2015 w Rozwój zawodowy, nauka, praca przez mation25 Nowicjusz (220 p.)

93,607 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,098 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...