+ Antworten
Ergebnis 1 bis 5 von 5

Berechnung liefert falsches Ergebnis (war: bin ratlos :-()

Diskussion über Berechnung liefert falsches Ergebnis (war: bin ratlos :-() in C++: Compiler, IDEs, APIs der Kategorie Programmierung; hallo, ich versuche mich derzeit an einem programm welches von einer zahlenreihe den mittelwert und die standardabweichung berechnen soll, das ...

  1. #1
    Reg.-Benutzer
    Reg.-Datum
    26.10.2011
    Beiträge
    7

    Standard Berechnung liefert falsches Ergebnis (war: bin ratlos :-()

    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[i]);
    }
    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[i] - mw) * (feld[i] - 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

  2. #2
    Reg.-Benutzer
    Reg.-Datum
    24.11.2010
    Beiträge
    183

    Standard

    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?
    Geändert von Servior (10.12.2011 um 20:48 Uhr)

  3. #3
    Reg.-Benutzer
    Reg.-Datum
    26.10.2011
    Beiträge
    7

    Standard

    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?

  4. #4
    Administrator + Moderator
    C++: Compiler, IDEs, APIs / C und C++, Algorithmik, Basic, Sonstige, .NET
    Avatar von Klotzkopp
    Reg.-Datum
    10.07.2001
    Ort
    Essen
    Beiträge
    8.980

    Standard

    Zitat Zitat von Glenkill Beitrag anzeigen
    das feld+1 müsste eigentlich deshalb richtig sein weil ich ja mehrere werte einlesen will
    Das 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.
    "Funktioniert nicht" ist keine ausreichende Problembeschreibung.

  5. #5
    Reg.-Benutzer
    Reg.-Datum
    26.10.2011
    Beiträge
    7

    Standard

    ich gelobe besserung :-) es funktioniert nun vielen dank :-)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Falsches Ergebnis bei einer Rechenoperation
    Von tizian im Forum C und C++
    Antworten: 5
    Letzter Beitrag: 09.04.2008, 12:03
  2. Ich bin Ratlos...
    Von Grinse-Hinze im Forum Webdesign
    Antworten: 5
    Letzter Beitrag: 17.11.2006, 08:28
  3. Ratlos
    Von danielbaer im Forum Jobsuche, Bewerbung und Zeugnisse
    Antworten: 19
    Letzter Beitrag: 11.09.2004, 13:39
  4. Ergebnis Berechnung ob bestanden oder net!
    Von ThimschE im Forum IHK-Prüfung allgemein
    Antworten: 1
    Letzter Beitrag: 13.05.2002, 14:08
  5. Ratlos!?!
    Von Traxim im Forum Ausbildung im IT-Bereich
    Antworten: 5
    Letzter Beitrag: 04.01.2002, 07:42

Die häufigsten Suchbegriffe für diese Seite:

Bisher noch keine Treffer von einer Suchmaschine