Mittelwert berechnen
-
Ich wollte gerne wissen, wie man den Mittelwert eines beliebigen 1-dimensionalen Float-Arrays berechnen kann. Ich wollte die Funktion als Modul haben, auf das ich später auch noch zugreifen kann.
Entschuldigt meine Ausdrucksweise. Bin echt nicht die C-Leuchte.
-
Alle Zahlen aufsummieren (geht am besten in einer Schleife) und durch die Anzahl dividieren.
-
habe ich gerade probiert, alleine die modularisierung macht mir noch probleme. bin auf folgendes gekommen:
#include "mittelwert.h"
float mittelwert (int x, int y, float z[x],float m)
{
for(m=0; x<y; x++)
{
m=m+z[x]
}
m=m/y
return m;
}Bitte zerreißt mich nicht in der Luft. m soll der Mittelwert sein, z das array und x und y zählerstand und zählervorgabe.
-
Such mal nach "Library", "Header" oder ähnlichem. Dein Compiler erzeugt dir aus jeder Übersetzungseinheit eine Bibliothek (LIB), die der Linker später zusammenfasst. Also kannst du dieses Mittelwert-Funktion einfach in einer eigenen Übersetzungseinheit (CPP-File) schreiben (wenn du willst, zusammen mit anderen Hilfsfunktionen), compilieren und sicher aufbewahren.
Wenn du die Funktion irgendwo anders brauchst, mußt du nur noch den Prototyp (Name und Parameter) in deinem Programm angeben und dem Linker sagen, wo er die LIB dazu finden kann.(und weil das abtippen der Prototypen fehleranfällig ist, gibt es Header)
-
hmm. ich glaube, ich weiß was du meinst, wie sieht es denn mit meinem obigen programmcode aus? guter ansatz, schlechter ansatz?
-
Die Funktion ist auf jeden Fall verbesserungswürdig
Erstens solltest du m lieber als lokale Variable anlegen (das Hauptprogramm hat sowieso nichts davon, dort einen Wert zu übergeben).
Zweitens komme ich mit den Berechnungen nicht so ganz hinterher. Normalerweise übergibt man auch nur zwei Werte, um ein (Teil)Array zu kennzeichnen - entweder Anfang (als Pointer) und Länge oder Anfang und Ende.
(btw, C macht aus deinem "float z[x]" sowieso ein "float* z")
-
Ich habe aufgegeben. Ich glaube, ich schreibe die Funktion einfach ins Hauptprogramm
-
Aufgeben dürfte auf längere Sicht keine erfolgversprechende Strategie sein
-
Vielleicht versuche ich es nochmal wenn ich das programm erst einmal am stehen habe
-
#include <stdio.h>
#include <stdlib.h>void main()
{
float Zahl[20];
float Mittel,m;
int i;for(i=0 , m=0 ; i<20 ; i++)
{
printf("%d. Zahl: ", i+1);
scanf("%d", &Zahl[i]);
m = m + Zahl[i];
}
Mittel= m / 20;printf ("Der Mittelwert ist: %d \n", Mittel);
}Wieso funktioniert das nich und ich bekomm immer nur 0 für den Mittelwert ausgegeben?
-
Erstmal heißt das int main().
Und dann solltest du mal im Debugger nachsehen, ob überhaupt das richtige eingegeben wurde. (kleiner Tip: float-Werte liest man mit %f ein ;))
-
shit stimmt
-
#include <stdio.h> #define ANZAHL 20 int main( void ) { float Werte[ANZAHL]; float Mittel; int i; Mittel = 0; for( i = 0; i < ANZAHL; i++ ) { printf( "%d. Wert: ", i + 1 ); scanf( "%f", &Werte[i] ); Mittel += Werte[i]; } Mittel /= ANZAHL; printf( "Der Mittelwert ist: %f\n", Mittel ); return 0; }