...



  • ...



  • Is das eine schulübung? Sowas kann man selbständig doch garnicht fabrizieren!



  • ...



  • Hast du das selber geschrieben?
    Oder kommt der Code von deinem Lehrer und du sollst die Fehler finden?



  • Diesen Code dürfte dir bereits der Compiler um die Ohren hauen oder hast du nur schlecht abgeschrieben?

    Folgende Dinge sind mir aufgefallen:

    1. In C werden Anweisungsblöcke mit den schweifenden Klammern { } gebildet.
    2. In einem switch erfordern die einzelnen case-Zweige ein break oder das Programm läuft in den nächsten case-Zweig.

    Bei weiteren Fragen solltest du mehr mitteilen. Wird ohne Fehler oder Warnungen compiliert und wenn ja, wo treten Ablauffehler auf?

    Hier im Forum gibt es nur wenige, die allein mit der Angabe 'Wo ist der Fehler' Sourcecodes analysieren wollen.

    Gerade als Anfänger musst du lernen, in kleinen Schritten ein Programm lauffähig zu bekommen. Dafür helfen Testausgaben auf dem Bildschirm oder in eine Datei. So hast du selbst einen Überblick über den Programmablauf und kannst dann bei auftretenden Problemen gezielter fragen.

    Viel Glück - auch die Experten haben mal zunächst ahnungslos angefangen! 🙂

    edit: Dein Lehrer sollte dir mehr beibringen oder du auf ihn hören. So wird das schwer etwas vernünftiges! :p



  • Der Code hat so viele [u]bewusst[u] eingefügte Fehler, dass es sich hierbei entweder um einen Troll-Post handelt, oder um eine Hausaufgabe in der die Fehler korrigiert werden müssen.

    Nicht einmal ein absoluter Anfänger produziert solche Fehler.



  • ...



  • Verarsch ein anderes Forum. Die Fehler im Code können nicht durch falsche Korrekturen oder schlechtes Programmieren entstehen.



  • ...



  • ...



  • Mit den Klammern hast du immer noch nicht alle im Griff 😃

    return sorgt dafür das break nie erreicht wird - auch, wenn es dir schwer fällt schau dir mal ein paar Beispiele mit switch case an



  • ...



  • ...



  • ...



  • Deutsch? Die Grundlagen solltest du finden, aber auf Dauer kommst du ohne Englisch nicht weit.

    Zu Beginn hilft es oft, wenn man die Fehler einen nach dem anderen angeht und wieder kompiliert. Auch nicht erschrecken, wenn nach einer Korrektur viele weitere Fehler angezeigt werden. Nerven behalten und weiter.

    Zeile 27 ist dein nächstes Problem - Zeile 25 sieht ähnlich aus und scheint okay ...

    Zeile 17 gefällt mir nicht - schau mal auf die nächsten beiden Zeile, 18 + 19, und dir sollte was auffallen.



  • ...



  • In Zeile 27 hast du noch was übersehen 😉
    Der Compiler nörgelt zwar nicht sofort, aber ...

    Kommt mir das nur so vor oder unterdrückst du bei deinem Compiler die Warnungen teilweise?

    Zeilennummern der Fehlermeldungen passen nicht zum Quelltext, ich hoffe für dich, das ist beabsichtigt 😉



  • Versuchs mal mit diesen Korrekturen, musst aber Zeilennummer von dem Anfangs-Programm jeweils um 10 verringern 😉

    Zeile Fehler/Berichtigung

    1 und 9 -"/" fehlt,schliesst Kommentarblock
    11 -"#" fehlt, Header Dateien muessen mit #include inkludiert werden
    13 -"(void)" fehlt, da sonst main function nicht klar definiert
    15 -Semikolons statt Kommas, dadurch wird nur "Jahr" deklariert
    22 -Anführungszeichen muessen doppelt sein, also "\n" statt '\n'
    26 -"fortfahren||1" ist immer wahr, statt "||" muss "==" benutzt werden
    30 -Schliessende Anfuehrungszeichen nach "%d fehlen
    32 -M ist vom Typ int und nicht char, also "%d" statt "%c" verwenden
    -Semikolon statt Komma vor dem Adressoperator
    34 -Adressoperator & fehlt
    35 -Dem Formatsring werden nur 2 von 3 Werten zugeordnet, letzer Wert "Jahr" fehlt
    37 -M muss <=2 sein, da Januar UND Februar in das vorherige Kalenderjahr fallen
    38 -falsche oeffnende Klammer bei if-Block
    39 -das Gleichheitszeichen muss links statt rechts von der Operation stehen
    -da M<=2 ist, muss M um 12 erhoeht und nicht erniedrigt werden
    43/44 -J und Jh müssen vertauscht werden, da J fuer die letzten beiden Ziffern
    im 4er Block steht und Jh fuer die ersten beiden
    46 -fuer die Wertzuweisung ist ein normales "=" noetig, und nicht ein ":="
    46/48 -"operand" muss hier gross geschrieben werden, oder bereits bei der
    Initialisierung(Zeile 17) klein geschrieben werden
    49 -weist Wt den Wert +7 zu, wenn Wt=0. Die ist ueberfluessig und falsch
    51/68 -switch Block muss mit {} geklammert werden
    53-63 -"break;" nach printf fehlt bei allen case Faellen
    60/62 -"case '5'" tritt zwei mal ein,in Zeile 62 muss '5' durch '6' ersetzt werden
    71 -"getchar();" ist ueberfluessig, da scanf char einliest
    72 -ein Leerzeichen vor %c verhindert einlesen des Rueckgabewertes von Return-Taste
    wodurch Programm nicht mehr vorzeitig beended
    73 -UND Verknuepfung ist falsch, da nur "J" ODER "j" stimmen muss
    -da wir den Wert abfragen und nicht zuweisen wollen,
    muss beide Male ein zusaetzliches "=" hinzugefuegt werde



  • ...



  • Wie schön das ihr ihm seine Hausaufgaben vorkaut.


Anmelden zum Antworten