legolas_3 Geschrieben 26. Dezember 2005 Geschrieben 26. Dezember 2005 Nabend Zusammen, als C# Neuling brauch ich mal eure Hilfe, denn ich bekomme ne Fehlermeldung über einen syntaktischen Fehler, weiß aber nicht, wie ich ihn beheben kann :confused: Ich habe folgende Mehrfachverzweigung: if (i_geb_tag <= 28 & i_geb_monat <= 2) { if (i_geb_jahr % 4 != 0 & i_geb_jahr % 400 != 0) { }; else { alter = alter + 1; }; }; Mein Compiler meldet folgenden Fehler: Ungültiger Ausdruck 'else' Kann mir jemand helfen ???
Guybrush Threepwood Geschrieben 26. Dezember 2005 Geschrieben 26. Dezember 2005 Hinter eine } gehört kein Semikolon. PS: Falsches Forum
legolas_3 Geschrieben 26. Dezember 2005 Autor Geschrieben 26. Dezember 2005 Hey, danke! Das ging ja super schnell Sorry, wegen dem falschen Forum...:hells:
Klotzkopp Geschrieben 27. Dezember 2005 Geschrieben 27. Dezember 2005 Sorry, wegen dem falschen Forum...:hells: Kein Problem, wird gleich verschoben Übrigens, falls das in deinem Code eine Schaltjahrprüfung sein soll, ist sie falsch. Wenn eine Zahl nicht durch 4 teilbar ist, ist sie immer auch nicht durch 400 teilbar, die zweite Bedingung ist in der ersten enthalten. Nichtteilbarkeit durch 4 ist auch keine notwendige Bedingung für "kein Schaltjahr". 1900 ist durch 4 teilbar, war aber trotzdem kein Schaltjahr. Die Teilbarkeit durch 100 muss mit in den Ausdruck. P.S.: Verschoben -> Delphi/RPG+CL/C#/Sonstige
legolas_3 Geschrieben 27. Dezember 2005 Autor Geschrieben 27. Dezember 2005 Hmmm...schade! Ich hab versucht das ganze ein wenig mit Hilfe einer Entscheidungstabelle zu vereinfachen! Ich könnte das ja alles in einfache If-Abfragen aufdröseln... also: Alle 4 Jahre ist es ein Schaltjahr Alle 400 Jahre auch... Und alle 100 Jahre nicht... Demensprechend alle 3 Bedingungen nacheinander abfragen! Wie sehe denn eine vereinfachte IF-Abfrage aus???
Amstelchen Geschrieben 27. Dezember 2005 Geschrieben 27. Dezember 2005 theoretisch müsstest du nur den ausdruck jahr%4==0&&(jahr%100||jahr%400==0) evaluieren, der entweder 1 oder 0 liefert, je nachdem ob jahr ein schaltjahr ist oder nicht. ob c# diese vereinfachte c-syntax allerdings unterstützt weiss ich nicht. s'Amstel
DennyB Geschrieben 27. Dezember 2005 Geschrieben 27. Dezember 2005 A = x ist durch 4 teilbar B = x ist durch 100 teilbar C = x ist durch 400 teilbar Logisch wuerde es wie folgt aussehen: A Λ Â¬(B Λ Â¬C) Mit einer if-Abfrage: if((x%4 == 0) && !((x%100 == 0) && (x%400 != 0)))
legolas_3 Geschrieben 27. Dezember 2005 Autor Geschrieben 27. Dezember 2005 theoretisch müsstest du nur den ausdruck jahr%4==0&&(jahr%100||jahr%400==0) evaluieren, der entweder 1 oder 0 liefert, je nachdem ob jahr ein schaltjahr ist oder nicht. ob c# diese vereinfachte c-syntax allerdings unterstützt weiss ich nicht. s'Amstel Also ich weiß nicht recht, ob das funktionieren würde. So wie ich die Schaltjahr regeln kenne, ist alle 100 Jahre KEIN Schaltjahr. Alle 4 Jahre und alle 400 Jahre doch! Von daher denk ich, dass in der Teil des Ausdruckes mit dem Modulo 100 negiert werden muss... Also eher so! jahr%4==0&&(jahr%100!=0||jahr%400==0) Was meint ihr?
DennyB Geschrieben 27. Dezember 2005 Geschrieben 27. Dezember 2005 Was meint ihr? Ich weiss ja nicht, werden meine Beitraege hier immer ueberlesen? Schau mal ueber dir. Ein Schaltjahr ist jedes Jahr, das durch 4 teilbar ist, ausser den Jahren die durch 100 aber nicht durch 400 teilbar sind.
legolas_3 Geschrieben 28. Dezember 2005 Autor Geschrieben 28. Dezember 2005 Oh sorry... aber wenn ich deine Negation vor der Klammer aufhebe, dann ist meine Abfrage doch auch richtig, oder? Also jene welche: jahr % 4 == 0 && ( jahr % 100 != 0 || jahr % 400 == 0 )
DennyB Geschrieben 28. Dezember 2005 Geschrieben 28. Dezember 2005 Ja, das ist das Gleiche, deshalb sagte ich ja "Schau mal ueber dir" A Λ Â¬(B Λ Â¬C) A Λ (¬B ν C) (A Λ Â¬ ν (A Λ C) usw... Nur die Vergleiche laufen anders, bei dir werden beide Ausdruecke in der Klammer ueberprueft, egal ob der 1. true oder false ist.
legolas_3 Geschrieben 28. Dezember 2005 Autor Geschrieben 28. Dezember 2005 Okay...dann bin ich ja beruhigt Hat denn deine Abfrage einen Vorteil gegenüber meiner?
DennyB Geschrieben 28. Dezember 2005 Geschrieben 28. Dezember 2005 Nein, denke nicht. Bei dir werden auch nicht immer beide ausgewertet, hatte mich eben verguckt, tut mir Leid.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden