Rückgabewert einer Bool-Funktion [gelöst]



  • Hallo Ihrs,

    bin grad dabei erste kleine Progrämmchen zu schreiben, hab das Prob dass die Auswertung des Rückgabewerts einer BOOL-Funktion Sorgen macht.
    Das Programm macht mir aus jedem Jahr ein Schaltjahr... ist garantiert nur was Kleines, aber ich sitz hier und komm nicht drauf... << PEBCAK 😉

    #include <iostream>	
    bool istSchaltjahr(int j);
    
    using namespace std;
    
    int main()
    {
      int jahr;
      cout << "Welches Jahr ist ein Schaltjahr?" << endl;
      cout << "Bitte eine Jahreszahl eingeben:" << endl;
      cin >> jahr;
    
      istSchaltjahr(jahr);
    
     	if (true) 
    		cout << jahr << " ist ein Schaltjahr" << endl;
    
     	else if (false)
    		cout << jahr << " ist KEIN Schaltjahr" << endl;
    
    }
    
      bool istSchaltjahr(int j)
     {
    
     //	int test = jahr%4;
    	if (j%4 == 0)
    		j=true;
    	else 
    		j=false;
    
    	return j;	
    
     };
    

    Thx for help, Tom



  • bool istSchaltjahr(int j) 
     { 
        return (j%4 == 0) 
    
     };
    


  • Es gab aber noch mehr Bediengungen für ein Schaltjahr.
    Ich glaub da war noch was mit
    %100 != 0
    und
    %200 == 0



  • tomcat22 schrieb:

    #include <iostream>	
    bool istSchaltjahr(int j);
    				
    using namespace std;
    
    int main()
    {
      int jahr;
      cout << "Welches Jahr ist ein Schaltjahr?" << endl;
      cout << "Bitte eine Jahreszahl eingeben:" << endl;
      cin >> jahr;
    
      istSchaltjahr(jahr);
      
     	if (true) //DAS ist immer WAHR, deine Funktion ist dabei irrelevant
    		cout << jahr << " ist ein Schaltjahr" << endl;
    		
     	else if (false)
    		cout << jahr << " ist KEIN Schaltjahr" << endl;
    		
    }
    
      bool istSchaltjahr(int j)
     {
     
     //	int test = jahr%4;
    	if (j%4 == 0)
    		j=true;
    	else 
    		j=false;
    		
    	return j;	
    		 
     };
    

    Thx for help, Tom



  • the_alien schrieb:

    Es gab aber noch mehr Bediengungen für ein Schaltjahr.
    Ich glaub da war noch was mit
    %100 != 0
    und
    %200 == 0

    das ist mir klar und das kommt auch noch, aber ich hab die bool-funktion falsch angewendet. jetzt hab ichs so, aber er macht mir aus jedem jahr ein schaltjahr... 😞

    istSchaltjahr(jahr);
    
     	if (true) 
    		cout << jahr << " ist ein Schaltjahr" << endl;
    
     	else if (false)
    		cout << jahr << " ist KEIN Schaltjahr" << endl;	
    }
    
      bool istSchaltjahr(int j)
     {
    
     //	int test = jahr%4;
    	return (j%4 == 0);
    


  • the_alien schrieb:

    Es gab aber noch mehr Bediengungen für ein Schaltjahr.
    Ich glaub da war noch was mit
    %100 != 0
    und
    %200 == 0

    Nein.
    Die Bedingungen für ein Schaltjahr sind: Es muss durch 4 aber nicht durch 100 teilbar sein. Außerdem sind alle Vielfachen von 400 Schaltjahre.

    Daraus folgt die Funktion:

    bool isLeapYear(const unsigned int year)
    {
           if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
                   return true;
           return false;
    }
    

    Caipi



  • tomcat22 schrieb:

    istSchaltjahr(jahr);
      
     	if (true) 
    		cout << jahr << " ist ein Schaltjahr" << endl;
    		
     	else if (false)
    		cout << jahr << " ist KEIN Schaltjahr" << endl;	
    }
    
      bool istSchaltjahr(int j)
     {
     
     //	int test = jahr%4;
    	return (j%4 == 0);
    

    Keine Ahnung was du dir vorstellst, aber du musst den Rückgabewert deiner Funktion überprüfen...

    if(istSchaltjar(jahr)){
      //is
    }else{
      //is nich
    }
    

    true ist true... daran änderst du mit deiner Funktion doch nichts...



  • war mir über die korrekte anwendung der bool-funktion nicht im klaren, aber jetzt funzt's! danke für eure hilfe! 😃

    tom


Anmelden zum Antworten