Berechnung der Schaltjahre ohne Kontrollstrukuren(if, while, for oder ähnliches)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Berechnung der Schaltjahre ohne Kontrollstrukuren(if, while, for oder ähnliches)

    Hallo, zusammen. Ich habe folgendes Problem:

    ich soll ein Programm schreiben, das ein Datum(Jahr) einliest und dann ausgibt, ob dies Jahr ein Schaltjahr ist. Die Zahl kann zwischen Jahr 0001 bis Jahr 9999 sein. Im Programm darf man keine Kontrollstrukturen (if, while, for oder ähnliches) benutzen.

    Falls die Zahl durch 4 teilbar---->Schaltjahr

    Falls die Zahl durch 4 und 100 teilbar---->kein Schaltjahr

    Falls die Zahl duch 400 teilbar---->schaltjahr



    Ein erlaubtes Hilfsmittel sind initialisierte Felder, denen man über einen geschickt berechneten Index die gewünschten Informationen entlocken können( Zeichenketten, Zahlen).

    Kann jemand mir ein paar Tipps geben?

    Vielen Dank!
  • ajo ich habs nun nich in c gemacht und weiss auch ned ob es nun wirklich klappt aber teste es doch einmal so

    du erstellst dir ein array mit strings als inhalten ..in das erste array feld schreibst du ein "JA" und in das 2te array feld ein "NEIN"
    "Falls die Zahl durch 4 teilbar---->Schaltjahr"

    ob etwas glatt teilbar ist siehst du mit modulo rechnen also z.b. 2000 modulo 4 = 0
    nun brauchst du ne variable wie z.b. "Test" in der du das ergebnis speicherst also etwa so Test = 2000 modulo 4 / Test in dem fall nun null

    und dann gibst du zum schluss mit nem printf die 0te stelle des arrays aus also irgendwie so array[Test]
    problem ist nun aber wenn es kein schaldjahr ist hmm naja haste vielleicht erst einmal nen denkanstoss :D
  • hi,eimma. Danke für deine Antwort.

    Was soll man machen,wenn die Zahl grösser als 99, z.B 100 oder 1900 oder 2000.Die Zahlen sind durch 4 teilbar,aber 100 und 1900 kein Schaltjahr.

    man brauch mindestens 2 Schritte um das Schlatjahr zu bestimmen,wenn die Zahl grösser als 99.

    1 Schritt:überprüfen ,ob die Zahl durch 4 teilbar

    2 Schritt:überprüfen ,ob die Zhal durch 400 teilbar

    wie kann ich die beide Schritten mit Hilfe von Feld hintereinande realisieren ?
  • Je nach Compiler(-einstellung) kannste ein wenig tricksen. Die meisten Compiler optimieren boolsche Ausdrücke indem sie Teile weglassen, wenn sie keinen Bedeutung mehr haben. Das kannste dann statt einem if benutzen. Schleifen brauchste bei dieser Aufgabe ja eh nicht.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Wusste der Aufgabensteller was er will?
    Ich nehme an du meinst den bei uns in Deutschland gültigen Kalender? Nein, den Namen musst du vorlegen - wurde
    im Mittelalter mit umfangreicher Reform optimiert und korrigiert <- sollst du das berücksichtigen ( 0001 bis 9999 ) ?
    Wurde in verschiedenen Staaten zu unterschiedlichen Daten übernommen. In Frankreich zur Zeit der Revolution gab
    es einen anderen Kalender u.s.w.

    Oder benötigst du nur eine vereinfachte Form dieses Kalenders und es ist egal vor etwa 600 Jahren einige Tage Differenz
    auftreten können? Und bis 9999 könnte noch die eine oder andere Korrektur kommen. ;)

    MfG bcc-fan