C Programm auf Fehler untersuchen
-
Hi,
ich bin ein totaler C Neuling und habe folgende Aufgabe:das folgende kleine Programmstück auf syntaktische und semantische Fehler zu untersuchen:
#include "stdio.h" #define CURRENT_YEAR 2015; #define MAX_YEAR 2500; int main(int argc, char **argv) { for(int year=0; year < MAX_YAER; year++) { if( year = CURRENT_YEAR ); printIt(year); else printf("passed the year %d...", year) } Int printIt(int year) { printf("The currrent year is: %d", year); }
Meine Ideen:
Zeile 6: man muss die Variable year zuerst lokal deklarieren, YAER falschgeschrieben
Zeile 7: Vergleich muss mit dem == Operator geschehen.
Zeile 10: Semikolon vergessen.und die Funktion printIt muss noch deklariert werden
mfg
-
in Zeile 1: #include <stdio.h>
-
hamsterbacke1234 schrieb:
in Zeile 1: #include <stdio.h>
Bei "" wird auch im Include-Pafd gesucht, wenn im aktuellen Verzeichnis keine Datei gefunden wird.
hamsterbacke1234 schrieb:
Zeile 6: man muss die Variable year zuerst lokal deklarieren,
Nein.
Das ist seit mittlerweile 17 Jahren erlaubt.Schau dir die Funktion printIt nochmal an.
Schon an der Farbgebung hier im Forum kannst du einen Fehler sehen.Ansonsten schick den Code durch einen Compiler. Der sagt dir genau, was er nicht mag.
Es gibt auch Online-Compiler. Achte dann aber darauf, dass du als Sparche C (nicht C++ oder C#) auswählst.
-
was mir noch aufgefallen ist die Konstanten darf man nicht mit Semikolon abschließen.
ansonsten kriege ich es jetzt zum kompilieren
#include "stdio.h" #define CURRENT_YEAR 2015 #define MAX_YEAR 2500 int printIt(year); int main(int argc, char **argv) { int year; for(int year=0; year < MAX_YAER; year++) { if( year = CURRENT_YEAR ){ printIt(year);} else{ printf("passed the year %d...", year);} } } int printIt(int year) { printf("The currrent year is: %d", year); }
-
noch ein zweites Programm das ich untersuchen soll:
int main(int argc, char **argv) { int value; do{ value++; printf("current value: %d", value); }while(!(value==10) || !(value==20)) //now our value equals 10 return 0; }
ich bin mir bei diesem Programmstück bzgl. der Funktion nicht sicher was es überhaupt tun müsste. Soll es von 1 bis 10 zählen?
mfg
-
hamsterbacke1234 schrieb:
Soll es von 1 bis 10 zählen?
Wie kommst du darauf, dass es bei 1 anfängt?
Edit: Und bei 10 aufhört?
-
Es soll wahrscheinlich random Dinge tun, schließlich wurde
value
keinen Anfangswert zugewiesen.
Würde manvalue
zu Beginn auf 0 setzen, würde es von 0 bis 9 zählen, wobei die Schleifenbedingung recht merkwürdig ist.
-
das war nur eine Vermutung...
wenn ich value nicht initalisiere kommt mir die Ausgabe komisch vor und Sie scheint auch nicht zu terminieren...
#include <stdio.h> int main(int argc, char **argv) { int value; do { value++; printf("current value: %d", value); }while(!(value==10) && !(value==20)); //now our value equals 10 return 0; }
-
Genau wegen den bereits genannten Fakten.
-
also meint ihr, dass das Programm so wie jetzt hingeschrieben gedacht ist?
-
Wird
value
einen Wert zu gewiesen?
-
in der Aufgabe wird value kein Wert zugewiesen.. ich weiß aber nicht ob das ein Fehler oder gewollt ist.
-
Denk mal stark nach
-
Wenn der Kommentar in Zeile 9 stimmen soll, dann muß value vor der Schleife einen Wert größer
INT_MIN
und kleiner 9 haben.Der Überlauf von
INT_MAX
nachINT_MIN
ist nicht vom Standard garantiert.
-
also zum Beispiel 0? ich finde es irgentwie logisch eine int variable mit 0 zu intialieren, weil das ja ein "standartwert" ist.
-
Es sollte ein, für das Problem, sinnvoller Wert sein.