Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Empfohlene Antworten

Veröffentlicht

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

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?

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.