"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.


Anmelden zum Antworten