er ignoriert else



  • Er ignoriert mein "else", geht nicht in die 30 Tage Schleife, wo er nur bis 30 zählen soll. Was tun? Ich hab die ganze Nacht schon mit verschiedenen Klammern probiert.

    #include <iostream>
    using namespace std;
    
    int tz=1; //tageszähler
    int mo=1;
    
    int main () 
    {
    
    	for(int mo=1; mo<13; mo=mo+1) //Monatszählerschleife
    	{
    		if (mo==1||3||5||7||8||10||12) //Tageszählerschleife für 31 Tage MONATE
    			{
    				for(int tz=1; tz<32; tz=tz+1)
    				{
    				int Tag=Tag+ 1;
    				cout<<"Tag " <<tz<<" Monat "<<mo<< " \n";
    				}
    				cout<<"MonatSENDE  \n  \n";
    			}
    			else
    			{
    					for(int tz=1; tz<31; tz=tz+1) //Tageszählerschleife für 30 Tage
    					{
    					int Tag=Tag+1;
    					cout<<"Tag " <<tz<<" Monat "<<mo<< " \n";
    					}
    				cout<<"Monatende  \n  \n";
    			}	
    
    	}
    }
    


  • Was erwartest du hiervon?

    if (mo==1||3||5||7||8||10||12)
    

    Tipp:
    Integer werden wenn nötig als bool interpretiert. Dabei ist 0 == false, ansonsten true.
    Also ist 3 true, und 5, und 7, und ...
    Deshalb ist dein if-Statement IMMER true!

    // edit:
    Deiner Einrückung verwirrt...



  • if(mo==1 || mo == 3 || mo == 5 || ...)
    

    So hat das auszusehen. Leider gibt es auch keinen IN-Operator für solcherlei Zwecke.

    MfG SideWinder



  • if(mo ==1 || mo == 3 || mo == 5) //usw. die andern noch ergänzen
    

    muss man das nicht so schreiben?

    edith sagt: SideWinder war schneller 🙂



  • Ich will einfach, wenn der Monatszähler auf Juni steht, daß er zum 30 Tagezähler geht, wenn er auf Januar steht, soll er zum 31 Tage Zähler gehen. Das kann doch nicht so schwer sein.

    Was für ein Ausdruck muß denn in die Bedingung rein?

    DANKE DANKE DANKE, klappt alles



  • Ich bezweifle dass es klappt! Schau mal aktuell auf nen Kalender!



  • l'abra d'or schrieb:

    Ich bezweifle dass es klappt! Schau mal aktuell auf nen Kalender!

    nun gib ihm schon den zaunpfahl-tipp 🙂

    mach einen else-if-zweig für den Februar (28)
    edith: wenn mans ganz genau nehmen will, füge man noch die Schaltjahre mit dem 29-Tage-Februar ein..



  • Was hälst du von einem Array mit der Anzahl der Tage je Monat?

    #include <iostream>
    
    unsigned int DayCount[] = { 31, 28, 31, 30, 31, 30, 
                                31, 31, 30, 31, 30, 31 };
    
    using namespace std;
    int main()
    {
       for( unsigned int Month = 0; Month < 12; ++Month )
       {  
          for( unsigned int Day = 0; Day < DayCount[Month]; ++Day )
          {
             cout << "Tag  : " << Day << 
                  << "Monat: " << Month << endl;
          }
       }
    }
    

    Btw: Wofür brauchst du die globalen Variablen mo und tz? Und wofür die lokale Variable Tag?


Anmelden zum Antworten