Forum » Programiranje » [c++] bool - izpis
[c++] bool - izpis
cosa nostra ::
Kako naj izpišem da nebo napake ? hvala za pomoč
Eroraa :
1 error C2181: illegal else without matching if
2 IntelliSense: expected a statement
Eroraa :
1 error C2181: illegal else without matching if
2 IntelliSense: expected a statement
void abonma::izpis()
{
cout<<"Ime predstave je "<<ime<<", stevilka predstave je : "<<predstava<<endl;
cout<<" dan predstave je " <<izdaja.dan<<endl;
cout<<" mesec predstave je " <<izdaja.mesec<<endl;
// Preverim dosegljivost predstave
if(izdaja.mesec < 11) // če je predstava meseca 12(decembra) je dosegljiva
bool dosegljivost=true; // true če je decembra
cout<<" Predstava je dosegljiva ker je meseca decembra"<<endl;
else
bool dosegljivost=false;// false če ni 12 meseca - decembra
cout<<" Predstava ni dosegljiva ker ni meseca decembra"<<endl;
}
amacar ::
void abonma::izpis()
{
cout<<"Ime predstave je "<<ime<<", stevilka predstave je : "<<predstava<<endl;
cout<<" dan predstave je " <<izdaja.dan<<endl;
cout<<" mesec predstave je " <<izdaja.mesec<<endl;
// Preverim dosegljivost predstave
if(izdaja.mesec < 11) // če je predstava meseca 12(decembra) je dosegljiva
{
bool dosegljivost=true; // true če je decembra
cout<<" Predstava je dosegljiva ker je meseca decembra"<<endl;
}
else
{
bool dosegljivost=false;// false če ni 12 meseca - decembra
cout<<" Predstava ni dosegljiva ker ni meseca decembra"<<endl;
}
}
Zgodovina sprememb…
- spremenil: amacar ()
Izbeglica ::
Še razlaga - pri pogojih, večina jezikov dopušča izpuščanje zavitih okelpajev, če imš potem pod njim zgolj eno vrstico, ki ti nekaj izvede.
Ti si imel dve in ti je zato vrnilo napako - compiler si je tvojo kodo tolmačil na ta način :
Dovoljeno bi bilo recimo tudi
Ti si imel dve in ti je zato vrnilo napako - compiler si je tvojo kodo tolmačil na ta način :
if(izdaja.mesec < 11) // če je predstava meseca 12(decembra) je dosegljiva
{
bool dosegljivost=true; // true če je decembra
}
cout<<" Predstava je dosegljiva ker je meseca decembra"<<endl; //ni več del pogoja, se vedno izvrši
else //nima pripadajočega if stavka; stoji tu sam zase in zato ne dela.
{
bool dosegljivost=false;// false če ni 12 meseca - decembra
}
cout<<" Predstava ni dosegljiva ker ni meseca decembra"<<endl; //ni več del else, se izvrši v vsakem primeru
Dovoljeno bi bilo recimo tudi
if(nekaj0 < nekaj1)
koda;
else //ker je za if zgolj ena vrstica kode, se ve, da pripada ta else if(nekaj0<nekaj1)
{
koda0;
koda1;
} Zgodovina sprememb…
- spremenil: Izbeglica ()
mojca ::
Tvoj "if" stavek se konča z bool dosegljivost=true; Napisal si tole:
Mimogrede: kje oz. kako si nameraval uporabiti spremenljivko dosegljivost? V trenutni implementaciji je verjetno preveč lokalna, da bi jo lahko še kje koristno uporabil.
Npr:
Oklepaje lahko zamikaš tudi na druge načine, a počni to konsistentno:
if(izdaja.mesec < 11) {
bool dosegljivost=true;
}
cout<<" Predstava je dosegljiva ker je meseca decembra"<<endl;
else {
bool dosegljivost=false;
}
cout<<" Predstava ni dosegljiva ker ni meseca decembra"<<endl;
- uporabljaj zavite oklepaje za kodo, ki sodi skupaj (za "if" in "else" stavkom)
- nauči se pravilno zamikati vrstice (cout se pri tebi začne en stolpec prezgodaj, prvi komentar je čudno zamaknjen naprej; tudi amacarjevi oglati oklepaji so skrajno čudno in nepregledno postavljeni)
- piši slovnično pravilno - ljudje bodo želeli brati kodo s komentarji za teboj
- uporabljaj presledke okrog ločil, sploh okrog << pri cout zaradi večje preglednosti
Mimogrede: kje oz. kako si nameraval uporabiti spremenljivko dosegljivost? V trenutni implementaciji je verjetno preveč lokalna, da bi jo lahko še kje koristno uporabil.
Npr:
void abonma::izpis()
{
cout << "Ime predstave je " << ime << ", stevilka predstave je: " << predstava << endl;
cout << " dan predstave je " << izdaja.dan << endl;
cout << " mesec predstave je " << izdaja.mesec << endl;
bool dosegljivost = false;
// Preverim dosegljivost predstave
if(izdaja.mesec < 11) { // če je predstava v 12. mesecu (decembra), je dosegljiva
dosegljivost = true; // true, če je decembra
cout << " Predstava je dosegljiva, ker je meseca decembra" << endl;
} else {
dosegljivost = false; // false, če ni v 12. mesecu (decembra) [lahko bi izpustil, ker se nastavi že zgoraj]
cout << " Predstava ni dosegljiva, ker ni meseca decembra" << endl;
}
}
Oklepaje lahko zamikaš tudi na druge načine, a počni to konsistentno:
if(izdaja.mesec < 11)
{
dosegljivost = true;
cout << " Predstava je dosegljiva, ker je meseca decembra" << endl;
}
else
{
dosegljivost = false;
cout << " Predstava ni dosegljiva, ker ni meseca decembra" << endl;
}
Zgodovina sprememb…
- spremenila: mojca ()
mallard ::
Napisal si:
Men to ne gre skup... če je mesec manjši od 11 je predstava decembra?
Kakorkoli, namesto if/else stavka je lepše
if(izdaja.mesec < 11) { // če je predstava v 12. mesecu (decembra), je dosegljiva
dosegljivost = true; // true, če je decembra
cout << " Predstava je dosegljiva, ker je meseca decembra" << endl;
Men to ne gre skup... če je mesec manjši od 11 je predstava decembra?
Kakorkoli, namesto if/else stavka je lepše
bool dosegljivost = izdaja.mesec < 11;