Ergebnis 1 bis 4 von 4

Thema: [Statistik/Programmierung(C++)/Physik]

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    1. Dein Programm könnte einen Buffer Overflow haben. T[800] geht nur von 0 - 799 und da du mit 1 zu beginnen zählst und du 800 Werte hast, wirst du über 799 rausgehen.
    2. Du Reinitialisierst b nicht neu, ohne b wäre das vielleicht nicht passiert Daher wurde b immer grösser da du immer mehr dazuaddierst aber b nie mehr auf 0 setzt.
    s_T_M konnte ich nicht überprüfen, da ich nicht weiss, was damit gemeint ist (ja Standardabweichung des Mittelwertes aber was soll das )
    Das else in der Mitte hab ich rausgenommen stattdessen s_T und s_T_M zu beginn mit 0 initialisiert.
    Code (Cpp):
    #include <cmath>	// Mathematische Funktionen
    #include <iostream>	// Für Konsolenein- und Ausgabe
    #include <iomanip>	// Modifikation der Ein- und Ausgabe
    #include <fstream>	// Dateiein- und Ausgabe
    using namespace std;
     
    int main ()	{
    	ifstream in("Pendel.dat");
    	ofstream out("Pendel2.dat");
    	int x=1;
    	double T[801], T_M[801], s_T = 0, s_T_M = 0;
    	double a,b;
    	T_M[0]=0;
    	out<<"Werteanzahl	 Mittelwert	 Standardabweichung	 Standardabweichung Mittelwert"<<endl;
    	while (!in.eof()) {
    		in>>T[x];
    		T_M[x]=(1.0/x)*((x-1)*T_M[x-1]+T[x]);
    		if (x>1) {
    			a = 0;
    			for (int i=1;i<=x;i++) {
    				a += (T[i]-T_M[x])*(T[i]-T_M[x]);
    			}
    			s_T=sqrt(b/(x-1));
    			s_T_M=s_T/sqrt(x);
    		}
    		out<<x<< " " <<T_M[x]<< " " <<s_T<< " " <<s_T_M<<endl;
    		x++;
    	}
    	in.close();
     
    	out.close();
     
    	return 0;
    }
     

    Geändert von Drakes (31.01.2010 um 21:20 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •