Klausuraufgabe

andymei

Grünschnabel
Hallo,
ich bin neu hier und beim programmieren in C.
Leider muss ich als Bauingenieur eine Klausur in EDV über das Programmieren mit C schreiben. Bitte fragt mich nicht wieso!
Folgende Aufgabenstellen bereitet mir Schwierigkeiten:

Gegeben ist folgendes C-Programm:

# include <stdio.h>
# include <string.h>

int Idee(int e)
{
if (e%3 == 0) return(e); else return(0);
}

void main()
{
char string[30];
int i=0, s=0;
int z;

do
{
printf("Eingabe: ");
gets(string);
if (sscanf(string, "(%d)", &z) != 1)
break;
else
{
i++;
if (Idee(i) != 0) s += z;
}
} while(1);

printf("%d", s);
}
system("PAUSE");
return 0;
}

Welchen Bildschirmausdruck veranlaßt das Programm? Begründen Sie Ihre Aussage!

Bei mir erscheinen nur Fehlermeldungen in Zeile 9, bei void main() oder bei { darunter.
Ist dies die Antwort, wenn ja wieso****** Stehe Wahnsinnig aufm Schlauch.
Mit einigen Versuchen erscheint mir dann wirklich ein Bildschirmausdruck mit:

Eingabe=

Nach Eingabe eines Wertes verschwindet das Fenster wieder....

Nutze an meinem Netbook Dev-C++.
Danke im voraus!
 
Zuletzt bearbeitet:
Hi und Willkommen bei tutorials.de :)

Leider muss ich als Bauingenieur eine Klausur in EDV über das Programmieren mit C schreiben.
Bitte fragt mich nicht wieso!
Mach ich nicht :D
Kenn zB auch einen Medizinstudenten, der das muss...

Den C-Code bitte das nächste Mal zwischen [code=cpp]...[/code] schreiben.
Das macht alles besser lesbar.

Zu Dev-C++: Wenn du noch öfter programmieren würdest, würde ich empfehlen
auf etwas neueres umzusteigen. zB Visual Studio, Eclipse...
DevCPP ist veraltert und wird auch nicht mehr weiterentwickelt.
Da du im Baubereich später nur noch selten programmieren wirst...bleib dabei.

Zu den Fehlermeldungen (Zeile 9 usw.): Das ist nicht die gefragte Ausgabe, sondern:
Um vom Geschriebenen zum wirklichen, startbaren Programm zu kommen,
gibt es Hilfsprogramme, die das "übersetzen". Sogenannte Compiler.
Wenn am Geschriebenen was nicht passt, dann liefert der solche Fehlermeldungen.

Um sagen zu können, was falsch ist, wären die konkreten Meldungen ganz hilfreich.
Zum "void main" kann ich auch jetzt schon was sagen:
Im Programm hast du ein "return 0".
0 ist eine Zahl.
Von den C-Variablentypen (int, char, float, double...) würde für 0 zB. int passen (Zahlen ohne Kommastellen).
Beim "void main" muss dabei aber der Variablentyp stehen, der zum return-Wert passt.
void steht dabei für "kein Wert".
Wenn du also "int main" schreibst, sollte der Fehler weg sein.

Dein Programm sollte aber noch andere Compilerfehler ergeben:
zB hast du nicht zu jeder öffnenden { eine schließende }.
Lösche beim letzten printf (drittletzte Zeile) das } danach.

Im Allgemeinen gilt: Irgendwie herumprobieren, um die Fehler wegzubekommen, hat wenig Sinn.
Wenn man nicht versteht, was man macht, wird es nur schlimmer.
Poste bitte die gesamte Fehlerliste, dann können wir dir genau sagen, warum und wie du die ausbesserst.
Wenn das Programm schon so in der Angabe war, würde ich mich beim Lehrer beschweren.

Übrigens:
Welchen Bildschirmausdruck veranlaßt das Programm? Begründen Sie Ihre Aussage!
Das klingt danach, dass du statt in den Computer eingeben nachdenken solltest... ;-]

Gruß

Yeah, 2000! Prost :D
 
Übrigens:

Das klingt danach, dass du statt in den Computer eingeben nachdenken solltest... ;-]

Und das ist mein Problem, wirklich damit auseinander gesetzt habe ich mich nicht. Deswegen dacht ich, erstmal eingeben und gucken was rauskommt!
Schreibe morgen mittag, heißt heute mir den M*ll fein ins Köpfchen hauen aber das sind immer die besten Klausuren! Habe das Skript, ein paar Übungen und Altklausuren. Hoffe dass es hin haut. Das Schöne an dem ganzen, meine Professorin kanns selbst nicht... Skript, Übungen sowie Klausuren werden von jemand anderem geschrieben... NICE
 
Skript, Übungen sowie Klausuren werden von jemand anderem geschrieben... NICE
Jup, auch das kommt mir bekannt vor...und auch, dass die Lehrer wirklich vor allen Schülern beweisen, dass sie es nicht können.

Noch was ist mir aufgefallen: Das (%d) beim sscanf braucht die Klammern nicht.
Oder willst du die Zahlen eingeklammert eingeben?

Gruß
 
Hi.
Das Schöne an dem ganzen, meine Professorin kanns selbst nicht... Skript, Übungen sowie Klausuren werden von jemand anderem geschrieben... NICE
*entzückend* ;)

Zumal derjenige, der die Übungen schreibt auch nicht wirklich Ahnung zu haben scheint.

"void main()" ist und war nie korrektes C bzw. C++! Die main Funktion muss int zurückgeben.

Wenn du die von sheel genannten Probleme berichtigst, wird das Programm korrekt kompiliert.

Dir scheint aber nicht bewußt zu sein, dass du Zahlen in Klammern eingeben mußt. Tust du das nicht wird das Programm beendet:
Code:
Eingabe: (5)
Eingabe: (1)
Eingabe: (6)
Eingabe:
6Press any key to continue
Gruß
 
Seht ihr, genau das habe ich gemeint.
Dann sitzt man in einer Klausur da und die korrekte Antwort wäre....
Schreibfehler/Tippfehler

schön isses...
 
Der korrekte funktionsprototyp für main lautet übrigens:
Code:
int main (int argc, char **argv)

Je nach compiler den du verwendest, wird die fehlerhafte deklaration von main als error oder warning geworfen.
 
Hi.
Der korrekte funktionsprototyp für main lautet übrigens:
Code:
int main (int argc, char **argv)
Das ist nur eine Möglichkeit. Ebenfalls sollte (also es muss nicht!) überall funktionieren:
C:
int main()
Laut C und C++ Standard sind auch andere Parameter zulässig.

Die einzige Forderung, die der C/C++ Standard stellt ist, dass der Rückgabetyp int sein muss.

Gruß
 
Zurück