...
-
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.
-
kanaryam090 schrieb:
bist du zufällig mein Lehrer ^^
nö,musste die Aufgabe selber machen,also Programm-Fehler finden,dokumentieren und korrigieren.
Den Code poste ich nicht,da musste die schon selber ein "paar" Gedanken machen...
-
...
-
Ewiger Kalender = Optimist
Sagen wir gregorianischer Kalender, der zwar 1500 und paar Zerquetschte eingeführt wurde, aber nicht europaweit, ist allein eine lange GeschichteSo nun noch zum Quelltext das war wahrscheinlich eine Hausaufgabe - deshalb von mir in kleinen Häppchen
Die Komplettlösung hat noch ein paar kleine Fehlerchen
Ausgiebig testen kann nicht schaden
-
...