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.
-
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); }