» »

[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
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 :
 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…

mojca ::

Tvoj "if" stavek se konča z bool dosegljivost=true; Napisal si tole:

    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;



  1. uporabljaj zavite oklepaje za kodo, ki sodi skupaj (za "if" in "else" stavkom)

  2. 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)

  3. piši slovnično pravilno - ljudje bodo želeli brati kodo s komentarji za teboj

  4. 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 ()

cosa nostra ::

Hvala vam za nasvete :)

mallard ::

Napisal si:

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;