Glenkill Geschrieben 10. Dezember 2011 Geschrieben 10. Dezember 2011 hallo, ich versuche mich derzeit an einem programm welches von einer zahlenreihe den mittelwert und die standardabweichung berechnen soll, das programm ist syntaktisch richtig und scheint auch zu funktionieren aber ich verstehe nicht warum folgendes ergebnis auftritt wenn ich es ausführe: Wie viele Messwerte sollen eingelesen werden? 4 Geben Sie bitte 4 Zahlen ein; Mittelwert: 0.000000 Standardabweichung: 0.000000 mein quelltext dazu sieht wie folgt aus: main.cpp #include "globals.h" #include "calc.h" void main () { int i; int n; float *feld = NULL; double mw = 0; // an dieser stelle wurde immer gewarnt dass mw und std nicht initialisiert seien double std = 0; printf("Wie viele Messwerte sollen eingelsen werden?\n"); scanf_s("%d", &n); printf("Geben Sie bitte %d Zahlen ein:\n", n); feld =(float *)malloc (n*sizeof(float)); //ab hier bricht das programm ab for (i = 0; n < i; i++) { scanf_s("%f", feld+1); } //Diese Abfrage wollte ich eigentlich auch verwenden allerdings hatte ich auch hier fast das selbe Ergebnis bei der Ausgabe /*if (feld != NULL) { mw = fkt_mw(feld,n); std = fkt_std (feld,n); }*/ printf("Mittelwert: %lf\n", mw); printf("Standardabweichung: %lf\n", std); free (feld); getchar (); getchar (); } calc.cpp #include "calc.h" #include "globals.h" double fkt_mw (float *feld, int n) { int i; double mw; // Zuvor war mw hier auf 0 gesetzt das habe ich mal hier rausgenommen for (i = 0; i < n; i++) { mw += (feld); } mw = mw / n; return (mw); } double fkt_std (float *feld, int n) { int i; double mw, std; //std = 0; mw = fkt_mw(feld, n); for (i = 0; i < n; i++) { std += (feld - mw) * (feld - mw); } std = std / n; std = sqrt(std); return (std); } globals.h #ifndef GLOBALS_INC #define GLOBALS_INC #include <stdio.h> #include <math.h> #include <stdlib.h> #endif calc.h #ifndef CALC_INC #define CALC_INC #include "globals.h" double fkt_mw (float *feld, int n); double fkt_std (float *feld, int n); #endif wäre toll wenn da jemand für mich einen rat hätte. gruß glen Zitieren
Servior Geschrieben 10. Dezember 2011 Geschrieben 10. Dezember 2011 (bearbeitet) for (i = 0; n < i; i++) { scanf_s("%f", feld+1); } Ich vermute mal dort soll i<n stehen und nicht n<i. Sicher dass "feld+1" richtig ist? Bearbeitet 10. Dezember 2011 von Servior Zitieren
Glenkill Geschrieben 11. Dezember 2011 Autor Geschrieben 11. Dezember 2011 wahnsinn dass hätte mir auffallen sollen! vor lauter wald die bäume nimmer gesehn^^ nun werden die werte eingelesen aber mittelwert und standardabweichung werden mit 0.000000 angegeben. nun konnte ich die initialisierung in der calc.cpp vornehmen für mw und std. das feld+1 müsste eigentlich deshalb richtig sein weil ich ja mehrere werte einlesen will oder hast du da ne andere idee? Zitieren
Klotzkopp Geschrieben 11. Dezember 2011 Geschrieben 11. Dezember 2011 das feld+1 müsste eigentlich deshalb richtig sein weil ich ja mehrere werte einlesen willDas sollte wohl feld+i heißen. Falsch abgeschrieben? Und fürs nächte Mal: Lass dir bitte einen aussagekräftigen Threadtitel einfallen. Ratlos ist hier so ziemlich jeder, der hier eine Frage stellt, sonst würde er ja nicht fragen. Zitieren
Glenkill Geschrieben 11. Dezember 2011 Autor Geschrieben 11. Dezember 2011 ich gelobe besserung :-) es funktioniert nun vielen dank :-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.