langhaardack
Champion
(offline)
Dabei seit 07.2005
3625
Beiträge
|
Geschrieben am: 05.10.2011 um 04:45 Uhr
|
|
Hey Communityteil, der 'ne gewisse Ahnung von C hat! :D
Ich hab in der Schule eine Aufgabe bekommen die lautete:Zitat: Schreib' ein C-Programm, welches den User fragt, aus wievielen Integern er den Durchschnitt wissen möchte, lass' ihn dann die Nummern eingeben, und benutz dafuer einen for loop.
Die für mich am logischsten aussehende Lösung ist folgende: Pastebin-link. Kann das 1. jemand für mich schnell testen, da ich gerade nicht mehr kann, weil mein PC schon runtergefahren ist, und ich schon im Bett liege, und mit meinem MacBook on bin, und 2. Gibt's vielleicht elegantere/klarere Wege um so ein Problem zu lösen? (Vorrausgesetzt natürlich, dass das Stückchen Code von mir funktioniert wie's soll. ^^)
Also hauptsächlich bin ich an "Verbesserungen" oder sowas interessiert. ;)
Vielen Dank. :)
|
|
spark82 - 42
Halbprofi
(offline)
Dabei seit 11.2006
240
Beiträge
|
Geschrieben am: 05.10.2011 um 07:24 Uhr
Zuletzt editiert am: 05.10.2011 um 07:24 Uhr
|
|
ähem... schon mal was von gcc gehört?
Zitat:
gcc testprog.c -o mein-tolles-programm
Dann klappt auch mit dem Mac.
Die Sytaxfehler kannst dann ja leicht selbst finden.
Du musst nicht zwischen totalo und totaln unterscheiden. Anstelle dem
totaln=totalo+add;
printf("%i", totaln);
totalo=totaln
Kannst auch gleich folgendes schreiben:
totaln +=add
printf("%i", totaln);
Das schlimmste an Zensur ist XXXXXXXX XXXXXX.
|
|
Klischeepunk - 40
Champion
(offline)
Dabei seit 01.2005
8907
Beiträge
|
Geschrieben am: 05.10.2011 um 08:27 Uhr
Zuletzt editiert am: 05.10.2011 um 08:29 Uhr
|
|
Zitat von spark82: ähem... schon mal was von gcc gehört?
Zitat:
gcc testprog.c -o mein-tolles-programm
Dann klappt auch mit dem Mac.
Die Sytaxfehler kannst dann ja leicht selbst finden.
Du musst nicht zwischen totalo und totaln unterscheiden. Anstelle dem
totaln=totalo+add;
printf("%i", totaln);
totalo=totaln
Kannst auch gleich folgendes schreiben:
totaln +=add
printf("%i", totaln);
kleine anmerkung hierzu noch: totaln += add;
entspricht totaln = totaln + add;
(linker parameter von += wird zum ersten rechten).
@OP: Wenn dir das dein compiler übrigens nicht mit wucht um die ohren haut, solltest du ganz dringend den compiler wechseln. Entweder hast du nur geklaut oder das ding wirklich nie getestet sondern nur runtergehackt, gerade bei anfängern ne SAUBLÖDE idee. -> teste es. selbst. nur so lernst du. Sonst schließ ich imch meinem vorredner an.
Dieser Post wurde 2 mal ROT-13 verschlüsselt.
|
|
langhaardack
Champion
(offline)
Dabei seit 07.2005
3625
Beiträge
|
Geschrieben am: 05.10.2011 um 13:08 Uhr
|
|
Ich selbst benutz gcc auch am PC. ;P Wusste ehrlich gesagt nicht, dass das am Mac auch klappt. :X
Ein bisschen meckert der Compiler:
Zitat: 7.c: In function 'main':
7.c:11:2: error: 'for' loop initial declarations are only allowed in C99 mode
7.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code
Dann nochmal im C99-Mode:
Zitat: 7.c:6:1: warning: return type defaults to 'int' [enabled by default]
Also macht man das mit 'totaln += add'? Dann danke, nach sowas hab ich gesucht. ^^
|
|
DavidMaus_
Fortgeschrittener
(offline)
Dabei seit 09.2011
62
Beiträge
|
Geschrieben am: 05.10.2011 um 13:42 Uhr
Zuletzt editiert am: 05.10.2011 um 13:43 Uhr
|
|
Zitat von langhaardack: Ich selbst benutz gcc auch am PC. ;P Wusste ehrlich gesagt nicht, dass das am Mac auch klappt. :X
Ein bisschen meckert der Compiler:
Zitat: 7.c: In function 'main':
7.c:11:2: error: 'for' loop initial declarations are only allowed in C99 mode
7.c:11:2: note: use option -std=c99 or -std=gnu99 to compile your code
Dann nochmal im C99-Mode:
Zitat: 7.c:6:1: warning: return type defaults to 'int' [enabled by default]
Also macht man das mit 'totaln += add'? Dann danke, nach sowas hab ich gesucht. ^^
totaln += add <- ist das gleiche wie -> totaln = totaln + add
|
|
spark82 - 42
Halbprofi
(offline)
Dabei seit 11.2006
240
Beiträge
|
Geschrieben am: 05.10.2011 um 13:56 Uhr
Zuletzt editiert am: 05.10.2011 um 13:58 Uhr
|
|
Zitat: 7.c: In function 'main':
7.c:11:2: error: 'for' loop initial declarations are only allowed in C99 mode
In C darfst du Variablen nur am Anfang eines Blocks definieren, d.h. i in der for-Schleife zu definieren geht nicht - die Variable musst du am Anfang der Funktion anlegen, dann kannst sie iin der Schleife verwenden.
Zitat: 7.c:6:1: warning: return type defaults to 'int' [enabled by default]
deine main hat weder einen Rückgabe Typ definiert, noch einen Rückgabe Wert. Komisch, ich hätte erwartet, dass der Compiler das ernster nimmt...
Das schlimmste an Zensur ist XXXXXXXX XXXXXX.
|
|
Rifleman - 40
Experte
(offline)
Dabei seit 09.2003
1540
Beiträge
|
Geschrieben am: 05.10.2011 um 15:25 Uhr
Zuletzt editiert am: 05.10.2011 um 15:30 Uhr
|
|
Zusammenfassend:
- Systaxfehler
- Rückgabetyp + return
- Nutzlose Variabeln, du brauchst von den 6 nur 4
- newline verwenden, sieht sonst aus wie Scheisse in der Konsole
C99 ist ok, ist einfach angenehmer als ANSI C.
/edit: Zumindest wenn du gcc benutzt....
Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.
|
|