"error: expected identifier or '(' before '{' token" (Anfänger)
-
Ich habe hier ein kleines Programm, mit dessen Hilfe man die harmonische Reihe aufsummieren kann. Ich habe da eine Fehlermeldung, die ich nicht verstehe (bin totaler Anfänger):
"error: expected identifier or '(' before '{' token"
#include <stdio.h> int addition(int a); { <- FEHLER int i; int summe; i=2 summe=1; for(i = 2; i<=a; i++) summe=summe+(1/i); } return summe; int main(void) { int zahl; int p; printf("Gib eine Zahl ein:"); scanf ("%d",&zahl); p=addition(zahl); printf("Ergebnis=%d\n",p); return 0; }
Für Hilfe wäre ich sehr dankbar,
Dominik
-
int addition(int a); // Semikolon zuviel
-
Bei dir sind wohl die Texte ein wenig verrutscht?
Zeilen: 3, 7, 15
Zeile 3 das Semikolon gehört an Zeile 7.
-
Hab jetzt erst weitergelesen:
Du musst mit double Werten rechnen, da deine Summe sonst immer bei 1 bleibt.#include <stdio.h> double addition(int a) // Semikolon zuviel { <- FEHLER behoben int i; double summe; i=2; // Semikolon zuwenig summe=1.0; for(i = 2; i<=a; i++) summe=summe+(1.0/i); // summe += (1.0/i); ;) return summe; // gehört natürlich in die Funktion } int main(void) // hier war es richtig { int zahl; double p; printf("Gib eine Zahl ein:"); scanf ("%d",&zahl); p=addition(zahl); printf("Ergebnis=%f\n",p); return 0; // hier auch }
-
Außerdem muss return summe; vor die abschließende Klammer.
Und wundere dich nicht, wenn immer 1 zurückgegeben wird. 1/i für i>=2 liefert immer Null. Du müsstest also auf Gleitkommazahlen umsteigen oder dir irgend einen schlauen Trick überlegen.Edit: Die Lösung ist ja schon da.
-
Mal eine Info zur Fehlermeldung.
error: expected identifier or '(' before '{' token
übersetzt mit Babelfish
Fehler: Bezeichner erwartet oder '(' vor '{' token
Der Compiler erwartet einen Bezeichner (einen Namen, Variablentyp, ..) oder ein runde Klammer.
Der Fehler wird in der Zeile 4 festgestellt, tritt aber davor auf.