If-Abfrage studiere gerade ein Tutorial durch...



  • Hallo,

    Bin gerade dabei ein einfaches Tutorial durchzugehen... (If abfrage, welches Jahr ein Schaltjahr ist...

    1905 : kein Schaltjahr
    1996 : Schaltjahr
    1900 : kein Schaltjahr
    2000 : Schaltjahr

    // Teil des Programms...
    	bool istschaltjahr (int Jahr)
    	{
    		bool ist = false;
    		if (Jahr%4 == 0)
    			ist = true;
    		if (Jahr%100 == 0)
    			ist = false;
    		if (Jahr%400 == 0)
    			ist = true;
    		return ist;
             }
    

    Für was steht das Zeichen -> % <-? Welche aufgabe hat das Zeichen (Jahr%4)
    Für was steht bool? Warum nicht int? Float steht ja für Kommawerten!
    Ist bool nur für True und False? Int nur für ganze Zahlen?



  • DragonShaolin schrieb:

    Für was steht das Zeichen -> % <-? Welche aufgabe hat das Zeichen (Jahr%4)
    Für was steht bool? Warum nicht int? Float steht ja für Kommawerten!
    Ist bool nur für True und False? Int nur für ganze Zahlen?

    1900 ist ein Schaltjahr, habe selbst mal ein Programm dafür schreiben müssen, allerdings alles in eine Abfrage gepackt. 2100 ist kein Schaltjahr. Weiß leider die genaue Definition eines Schaltjahres nicht mehr, habe die in nem Buch, da ist auch ein Schaltjahrprogramm drin und auf nem Aufgabenzettel von der Schule. Naja, egal, deine Fragen sind erstmal wichtig:
    1. % steht für die Rechenoperation MODULO. Modulo ist eine ganzzahlige Division, die allerdings nicht das Disionsergebnis sondern den Rest zurück gibt: 9 % 2 = 1
    In deinem Fall, die angegebene Jahreszahl moduliert durch 4.
    2. bool kann nur 2 Fälle annehmen, richtig (true) oder falsch (false). Er ist 8 Bit groß.
    3. Warum nicht int...ähm...ich denke da werde ich korrigiert, aber ich sage mal weil es kleiner ist und vor allem weil es für Prüfungen durch if-Abfragen geeigneter ist, als int, geht schneller (behaupte ich mal). Aber wie gesagt, da lasse ich mich gerne korrigieren.
    4. Ja, wie bereits gesagt, kann bool nur diese 2 Werte annehmen, also nur true und false.
    5. Ja, int (integer) steht für ganzzahlige Werte. Nur float und double können Kommazahlen aufnehmen.

    Code-Hacker



  • 3. Warum nicht int...ähm...ich denke da werde ich korrigiert, aber ich sage mal weil es kleiner ist und vor allem weil es für Prüfungen durch if-Abfragen geeigneter ist, als int, geht schneller (behaupte ich mal).

    Keine Korrektur, nur eine Hinzufügung: bool drückt die Absicht des Programmierers besser aus. Man sieht beim Lesen des Programms sofort, dass dort mit einem Wahrheitswert gearbeitet wird, was bei int nicht der Fall wäre.



  • Vielen Dank für eure Hilfe!

    Cool das ich so geholfen werde!

    Ist nicht einfach von Basic auf C++ umzusteigen! ;o)



  • Code-Hacker schrieb:

    1900 ist ein Schaltjahr

    Das wäre mir neu.

    Normalerweise ist die Regel:

    was durch 4 teilbar ist ist schaltjahr.
    Außer wenn es auch durch 100 teilbar ist, dann isses keins.
    Außer es ist auch noch durch 400 teilbar, dann isses nämlich doch eins.

    Aufgrund der letzten Regel war 2000 Schaltjahr.

    MfG Jester



  • In Basic gibts übrigens auch einen MOD Operator 😉



  • Was ist jetzt richtig?

    Von CodeHacker oder das von Jester?

    Das von Jester hört sich sehr logisch an!



  • @Jester:
    Hast recht!
    Eben gefunden:
    "Ein Jahr ist genau dann kein Schaltjahr, wenn die Jahreszahl nicht durch vier teilbar ist oder wenn sie zwar durch einhundert, aber nicht durch vierhundert teilbar ist."

    @Cyrill:
    Das von Jester, habe mich geirrt.

    Code-Hacker



  • Alles klar!!!

    *freu* komme gut voran mit dem lernen von C++

    (ein wenig 😃 / viel) anders als Basic!

    Vielen Dank an euch! 👍


Anmelden zum Antworten