Größte & kleinste Zahl
-
Hallo liebe Community,
ich habe ein C-Problem und dabei keine Ahnung, warum es nicht funktioniert.
Wie der Titel es sagt, soll nach 12 eingegebenden Zahlen die Größte und Kleinste ausgegeben werden.
# include <stdio.h> main () { int n,max,min,i,zahl; n=0; for (i=0;i<12;i++) { printf("\nBitte geben Sie eine Zahl ein."); scanf("\t%d",&zahl); if (n==0) { max=zahl; min=max; } else { printf(""); } if (zahl>max) { zahl=max; } else if (zahl<min) { zahl=min; } n++; } printf("\nDie größte Zahl ist: %d und die kleinste: %d",max,min); }
Jedoch bekomme ich immer wieder bei beiden die erste eingegebende Zahl raus.
Vielen Dank im Voraus
-
Genauso wie bei dieser Aufgabe...ich sehe keinen Fehler und trotzdem meckert er.
Zum verzweifeln.
# include <stdio.h> main () { int zahl[12],max,2max,i,k=0; for (i=1;i<13;i++) { printf("\nBitte geben Sie eine Zahl ein."); scanf("\t%d";&zahl[k]); if (k==0) {zahl[1]=max;2max=max;} if (zahl[k]>max) { zahl[k]=max; } else if (zahl[k]>2max) { zahl[k]=2max; } k++; } printf("\nDie groeßte Zahl lautet %d und die zweitgroeßte %d.",max,2max); }
-
Wenn du eine größere Zahl als max findest, solltest du max ändern, nicht die Zahl.
-
Danke schonmal für den Hinweis. Die Fehlermeldungen die der Compiler ausspuckt:
gcc.exe 32.c:4:18: invalid suffix \\"max\\" on integer constant 32.c: In function `main\\': 32.c:4: error: syntax error before numeric constant 32.c:7: error: `i\\' undeclared (first use in this function) 32.c:7: error: (Each undeclared identifier is reported only once 32.c:7: error: for each function it appears in.) 32.c:10: error: syntax error before \\';\\' token 32.c:10: error: `k\\' undeclared (first use in this function) 32.c:10: error: syntax error before \\')\\' token 32.c:11:30: invalid suffix \\"max\\" on integer constant 32.c:16:22: invalid suffix \\"max\\" on integer constant 32.c:18:5: invalid suffix \\"max\\" on integer constant 32.c:23:68: invalid suffix \\"max\\" on integer constant
-
saukaelte schrieb:
gcc.exe 32.c:4:18: invalid suffix \\"max\\" on integer constant
Ja, "2max" ist auch kein leagler Variablenname - das erste Zeichen muß ein Buchstabe oder Unterstrich sein.
(der Rest sind Folgefehler, weil der Compiler nach diesem Problem aus dem Tritt gekommen ist, und Wiederholungen des selben Fehlers)Und inhaltlich: Deine Zuweisungen stehen falsch herum, dadurch füllst du letztlich dein gesamtes Array mit dem (undefinierten) Inhalt von 'max'. Richtig wäre
max=zahl[k];
.
-
jo, naja und die Schleife würd ich auch so aussehen lassen:
for(i = 0; i < 12; ++i)
da dein Array auch bloß 12 Elemente groß ist und von daher von 0 bis 11 geht und nicht von 1 bis 12
-
und außerdem bedeutet es "int main()"
Edit: Argh, hier ist ja C.
Da bin ich mir nicht mehr so sicher^^
-
The-Kenny schrieb:
und außerdem bedeutet es "int main()"
Edit: Argh, hier ist ja C.
Da bin ich mir nicht mehr so sicher^^
In C ist kein Rückgabetyp gleichbedeutend mit Rückgabetyp int
-
Ahh. Danke Jungs. Na darauf wäre ich in den nächsten 23023 Jahren nicht gekommen.
Edit:
Jetzt kann ich es kompilieren, aber es kommt totaler Schrott bei der Ausführung des "Programms" raus...naja probier ich mal den Fehler zu finden.
# include <stdio.h> main () { int zahl[12],max,max2,i,k=0; for (i=1;i<13;i++) { printf("\nBitte geben Sie eine Zahl ein."); scanf("\t%d",&zahl[k]); if (k==0) {zahl[1]=max;max2=max;} if (zahl[k]>max) { max=zahl[k]; } else if (zahl[k]>max2) { max2=zahl[k]; } k++; } printf("\nDie groesste Zahl lautet %d und die zweitgroesste %d.",max,max2); }
Aber das "größte+kleinste Zahl" funktioniert nun bestens.