Matrix Datei-Ausgabe



  • Gude Leutz,

    Leider bin ich total planlos im Gebiet der Ein- und Ausgabe und stehe vor dem Problem das ich eine Matrix in eine Datei ausgeben muss. Deshalb wende ich mich mit meinem Problem an euch.

    Meine Matrix ist vom Typ vector<vector<double>> dessen Zeilen und Spalten bekannt sind.

    Vielen tausend Dank für jeden Beitrag/ Tipp/ Rat uvm 😃

    Gruß Schickano



  • std::ofstream
    Falls du Hilfe erwartest, komme uns mit etwas Code entgegen.



  • Cool, Danke!

    Ich werde versuchen mir was sinnvolles zusammenzubasteln.

    Sobald ich fertig bin hol ich mir Euren Segen 😉



  • const int n = 4;
    	double val_1[n] = {1,2,3,4};
    	double val_2[n] = {5,6,7,8};
    
    	vector<double> v1;
    	vector<double> v2;
    	vector<vector<double>> matrix;
    
    	v1.insert(v1.begin(), val_1, val_1 + n);
    	v2.insert(v2.begin(), val_2, val_2 + n);
    
    	matrix.push_back(v1);
    	matrix.push_back(v2);
    
    	ofstream outfile ("new.txt");
    
    	for(int i = 0; i < matrix.size(); ++i){
    		size = matrix.at(0).size();
    		outfile.write (&matrix.at(0),size);
    	}
    
    	outfile.close();
    

    Das habe ich zusammengebraut. Bei der write Zeile bekomme ich ein Problem weil er ein char erwartet. Wie könnte ich das lösen?



  • Die write Funktion erwartet Bytes(chars) die sie schreiben kann, versuche es mit dem <<-Operator, der kann doubles verwalten. Dann müsstest du allerdings noch eine Schleife reinschachteln, da der <<-Operator keine Vector Direkt abspeichern kann und du die Komponenten der Matrix einzeln speichern musst.

    EDIT: Es sieht auch komisch aus wenn du 2 verschiedene Arrays benutzt
    Verwenden entweder c++ "direkt":

    double Matrix[n][m]
    

    oder den vector

    vector<vector<double>> Matrix
    

    aber nicht erst das erste und dann in den vecotr umfuchteln;)



  • Kannst du mir einen Rat geben wie ich z.b. folgende Zahlen
    120 3 5 7 8 2 8 2
    in einem Vector oder Matrix eingebe ohne 8 mal die pushback()-Methode aufzurufen.



  • hmm, ok ich sehe was du meinst, leider kenn ich da nix eleganteres als das was du gemacht hast.
    Ich persönlich würde den vector nicht benutzen und [][] benutzen.
    Allerdings bekomm ich bestimmt haue dafür, weil die meisten hier vector-fans sind 🤡

    in etwa so:

    for(int i=0; i<n; ++i) {
       for(int j=0; j<m; ++j) {
          ofile<<Matrix[i][j]<<' ';
       }
       ofile<<'\n';
    }
    

    und die Initializierung dann so

    //2x4 Matrix
       double Matrix[2][4] = {0,1,2,3 \
                              4,5,6,7};
    


  • Super 👍
    Vielen Dank JaykopX.

    So einem simplen Code hätte ich nicht erwartet 😃


Anmelden zum Antworten