Minimum, Maximum und Mittelwert aus ifstream



  • Hallo!
    Ich habe folgendes Problem! Ich habe eine Textddatei mit 13 koordinaten eingelesen als ifstream mit folgender schleife:

    //Einlesen und Prüfen der Anwesendheit von koordinaten.txt
    
    ifstream datei; //Deklaration von datei als ifstream
    datei.open("koordinaten.txt"); //Öffnen von koordinaten.txt
    
    	if (datei.is_open() == 0) //IF-Schleife zur Überprüfung der Anwesenheit von koordinaten.txt
    	{
    	cout <<" Die Datei koordinaten.txt konnte nicht gefunden werden!" << endl;
    	cout << endl;
    	}
    
    //Speicherung der Anzahl der Koordinatentripel
    datei>>tripel; 
    
    //Einlesen der Koordinaten mittels For-Schleife (zeilenweise)
    
    	for (z=0;z<tripel;z++) //gibt an wie lange die Schleife läuft (von Null bis Anzahl der Koordinatentripel)
    	{
    	datei >> tabelle[z][0] >> zeichen >> tabelle[z][1] >> zeichen >> tabelle[z][2];
    	//2D Array, z steht für die zeilen und 0-2 für die Spalten
    	}
    

    Nun soll ich Mittelwert, Maximum und Minimum berechnen. Und noch den Flächeninhalt. Würde mich über jede Hilfe freuen, schonmal vielen Dank im vor raus.



  • hmm es geht also um flächen im 3-Dimensionalen-Raum

    ich poste Dir hier mal ein Stück Code der aber nur für den 2D-Raum gilt
    um beliebige Flächen zu berechnen.

    float getFlaeche(void)
         {
              fl = 0.0;
              n = PolyPoints.getObjectCount();
              PolyPoints.goTop();
    
              pArr = new Point * [n];
    
              for(unsigned int i = 0; i<=n;i++)
              {
                   pArr[i]    = new Point;
                   point      = PolyPoints.getObject();
                   pArr[i]->x = point.x;
                   pArr[i]->y = point.y;
              }
    
              for(unsigned int i = 0; i<n;i++)
                   fl=fl+((pArr[i]->x*pArr[i+1]->y)-(pArr[i]->y*pArr[i+1]->x))/2.0;
    
              makeEmpty(); // gibt dden dynamischen Speicher frei   
    
              // Es gibt keine negativen Flächen also passend machen
              if(fl<0)  fl = fl *-1.0;
              return fl;
         }
    

    Stammt aus einer Klasse die ich mal vor 2 Jahren für ein kleines Tool, mit Hilfe eines Buches über Lineare Algebra, zusammengezimmert habe!
    Diverse spezielle Fehler habe ich nicht berücksichtigt. An den Beispielen in dem Buch hatte ich es aber dazumal getestet und es hat geklappt!
    Hmm müsstest nur noch die 3. dimensiuon dazu frimmeln!

    Hmm was meinst Du mit Minimum und Maximum, Mittelwert?
    Ich könnte mir jetzt nur drunter vorstellen das Du von mehreren
    Flächen im 3D-Raum die Flächen berechnest. Ja dann würde ich diese
    Flächenwärte in so einem Container der STL sammeln oder einfach in einem Array!

    Dann würde eine FOR-Schleife genügen um sofort MIN, MAX und den Mittelwert zu bestimmen.

    mfg sclearscreen 🙂



  • es handelt sich einfach um ne liste mit 13 koordinaten paaren die in dem stream gespeichert sind.
    Maximum= größter x Wert, y Wert z Wert



  • Für Dich ist nur Die 2. Schleife in derer obigen Methode von Interesse!!
    Ich schreibs nochmal übersichtlicher:

    for(unsigned int i = 0; i<n;i++)
                   fl=fl+((pArr[i]->x * pArr[i+1]->y)-(pArr[i]->y * pArr[i+1]->x))/2.0;
    


  • Hmm 3 Arrays wäre das beste

    um die Werte dort einzulesen

    float x[20], y[20], z[20]; // hier mit 20 Elementen wenn Du ungefähr weisst wieviel in der Datei stehen aber ich denke das ist nicht so oder
    

    Oder?




Anmelden zum Antworten