Fehler C Programm nicht gefunden?



  • #include <stdio.h>
    #include <stdlib.h>
    #define ANZAHL 10
    
    float berechDurchschnitt (int* durchschnitt, double* summe ) 
    { 
       /* durchschnitt: Array of ANZAHL Floats */
       /* summe: Zeiger auf einzelnen Float */
       for(int i = 0; i < ANZAHL; i++) 
       { 
          summe += durchschnitt[i]; 
       } 
       return (summe/ANZAHL); 
    }
    
    int main()
    { 
       double summe = 0.0;
       int durchschnitt[ANZAHL];
       
       printf("Geben Sie 10 ganzzahlige Werte ein:");
       
       for (int i=0; i<ANZAHL; i++) 
       {
          scanf("%d", durchschnitt[i]);
       }
       printf("Der Durchschnitt ist: %f ", berechDurchschnitt(durchschnitt, &summe));
     
       /*
       Da "durchschnitt" ein Array ist, brauchst Du hier den
       Adressoperator "&" nicht (Arrays werden immer als
       Zeiger übergeben).
       Da "summe" ein Einzelwert ist, mußt Du hier den
       Adressoperator verwenden, um einen Zeiger darauf
       zu bekommen.
       */
       
       return 0;
    }
    
    

    Der Compiler sagt mit ich habe bei Zeile 13 bei return einen Fehler aber ich weiß nicht was er damit meint?
    Der Compiler:
    13 17 [Error] invalid operands to binary / (have 'double *' and 'int')



  • @HIitsme
    Wozu ist es gut, einen Pointer durch eine Anzahl zu teilen? Die "Summenberechnung" wirft eine ähnliche Frage auf, auch wenn der Compiler hier nichts bemängelt.



  • @HIitsme Zeile 11 ist dann auch falsch.

    Soll die Summe denn überhaupt aus der Funktion mit raus?



  • int *summe;
    
    summe = 12345; //weise dem zeiger die adresse 12345 zu
    *summe = 12345; //schreibe den wert 12345 an die in summe hinterlegte adresse
    


  • @DirkB Ja soll raus.



  • @HIitsme

    float berechDurchschnitt (int* durchschnitt, double* summe )  // warum nur float zurück
    { 
       /* durchschnitt: Array of ANZAHL Floats */  // ANZAHL gehört als Parameter der Funktion mit übergeben!
       /* summe: Zeiger auf einzelnen Float */       // float ist meist ungleich double
    
       double s = 0.0;
       for(int i = 0; i < ANZAHL; i++) 
       { 
          s += durchschnitt[i]; 
       } 
      if (summe != NULL) 
        *summe = s;
    
      return (s/ANZAHL); 
    }
    

Log in to reply