C Programm unter Unix

S

soso

Jungspund
Hallo!

Wir haben ein Problem mit dem folgenden Programm...
Der Kopf war uns so gegeben und darf nicht geändert werden...
Das Programm soll Mittelwert und Varianz eines Beispielarrays berechnen... wir haben schon versucht zu kommentieren...^^ bestimmt zu viel und sinnlos, aber naja...
Hier mal das Programm...

# include <stdio.h>
# include <math.h>


void statistik (double zahlen[], int laenge, double *mu, double *var)
{
double x, y; /* Vereinbarung von x und y als double-Variable */
int i; /* Vereinbarung von i als int-Variable */
x = 0; /* der Variablen x wird der Wert 0 zugewiesen */
for (i = 1; i <= laenge; i++) x = x + zahlen[i - 1];
/* für die Zahlen i von 1 bis laenge wird */
/* dem "neuen" x jeweils die Summe vom "alten" x */
/* und dem (i-1). Element vom Array zahlen zugewiesen. */
*mu = (1 / laenge) * x; /* dem Objekt auf das der Pointer mu zeigt, wird das Produkt*/
/* aus x (nach for-Schleife) und 1/laenge zugewiesen */
y = 0; /* der Variablen y wird der Wert 0 zugewiesen */
for (i = 1; i <= laenge; i++) y = y + pow(zahlen[i - 1] - *mu, 2);
/* für die Zahlen i von 1 bis laenge wird dem "neuen" y */
/* jeweils die Summe vom "alten" y und dem Quadrat aus der Differenz*/
/* vom (i-1). Element vom Array zahlen und dem Mittelwert *mu zugewiesen. */
*var = 1 / (laenge - 1) * y; /* dem Objekt auf das der Pointer var zeigt, wird das Produkt*/
/* aus y (nach for-Schleife) und 1/(laenge-1) zugewiesen */
}


int main ()
{
double zahlen[4] = {1,7,3,9}; /* den 4 Elementen des Arrays vom Typ double werden die Werte 1,7,3,9 zugewiesen */
int laenge = 4; /*................*/
double mittelwert, varianz, *var, *mu;
/* Vereinbarung von mittelwert und varianz als double-Variable */
/* Vereinbarung von var und mu als Pointer, die auf double-Variablen zeigen */
var = &varianz; /* Pointer var wird initialisiert und zeigt auf varianz */
mu = &mittelwert; /* Pointer mu wird initialisiert und zeigt auf mittelwert */
statistik (zahlen, laenge, &mittelwert, &varianz);
/* die Funktion statistik (zahlen, laenge, &mittelwert, &varianz) wird aufgerufen */
printf (" Der Mittelwert der Zahlen ist %lf.\n Die Varianz ist %lf.\n", mittelwert, varianz);
/* Ausgabe von mittelwert und varianz */


Das Programm läuft zwar, aber funktioniert nicht... es gibt immer nur 0 und 0 aus... und wir wissen nicht warum...
wäre echt nett, wenn uns jemand helfen könnte!! :hilfe2:
lg
 
Ihr solltet die Terme zusammenfassen, und zwar so:
Code:
*mu = (x / laenge);
*var = y / (laenge - 1);
Dann sollte es gehen...
 
Funktioniert jetzt!!! :bounce:
Vielen vielen Dank!!!
Und frohe Weihnachten...
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

PulseAudio sound nur bei MPD

NagiosGrapher 1.7.1 funktioniert nicht

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

XFCE freezes at startup

Zurück
Oben