Veröffentlicht 26. Dezember 200519 j 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 ???
26. Dezember 200519 j Hey, danke! Das ging ja super schnell Sorry, wegen dem falschen Forum...:hells:
27. Dezember 200519 j 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
27. Dezember 200519 j 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???
27. Dezember 200519 j 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
27. Dezember 200519 j 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)))
27. Dezember 200519 j 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?
27. Dezember 200519 j 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.
28. Dezember 200519 j 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 )
28. Dezember 200519 j 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.
28. Dezember 200519 j Okay...dann bin ich ja beruhigt Hat denn deine Abfrage einen Vorteil gegenüber meiner?
28. Dezember 200519 j Nein, denke nicht. Bei dir werden auch nicht immer beide ausgewertet, hatte mich eben verguckt, tut mir Leid.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.