005
29.05.2005, 19:12 Uhr
Spacelord
Hoffnungsloser Fall
|
Hi, du könntest die Werte auch im Textmodus speichern. Mit C würden fprintf und fscanf dann die Arbeit erledigen. Mit C++ hast du noch ganz andere Möglichkeiten. Als Textdatei mit C++ z.B. so:
C++: |
#include <iostream> #include <fstream> #include <string>
using namespace std;
template<typename T> T** load2DArray(string filename,size_t& X) { size_t i,j,Y; ifstream in(filename.c_str()); if(!in) { cerr<<"Fehler beim öffnen der Datei!"<<endl; return NULL; } in>>X;//X wird für den Aufruf von delete2DArray benötigt in>>Y;
T** arr = new T*[X]; for(i=0;i<X;++i) arr[i]= new T[Y]; for(i=0;i<X;++i) { for(j=0;j<Y;++j) in>>arr[i][j]; } in.close();
return arr; };
template<typename T> void save2DArray(size_t firstDim,size_t secondDim,T** _arr,string filename) { ofstream out(filename.c_str()); if(!out) { cerr<<"Fehler beim öffnen der Datei!"<<endl; return; } out<<firstDim<<' '<<secondDim<<'\n';
for(size_t i=0;i<firstDim;++i) { for(size_t j=0;j<secondDim;++j) out<<_arr[i][j]<<' '; out<<'\n'; } out.close(); }
template<typename T> void delete2DArray(T** arr,size_t s) { for(int i=0;i<s;++i) delete[] arr[i]; delete []arr; }
int main() { //Testdatei mit Testdaten füllen string file; size_t X; size_t Y; size_t i; cout<<"Zeilen ?: "; cin>>X; cout<<"Spalten ?: "; cin>>Y; //Speicher besorgen int** arr = new int*[X]; for(i=0;i<X;++i) arr[i]= new int[Y]; //Array mit Testdaten füllen int wert=1; for(i=0;i<X;++i) { for(size_t j=0;j<Y;++j) { arr[i][j]=wert; ++wert; } } cout<<"Name des Files zum speichern?:"; cin>>file;
//Array speichern save2DArray<int>(X,Y,arr,file); //Speicher des Testarrays freigeben delete2DArray<int>(arr,X); //Array aus Datei dynamisch erstellen int** fileArray = load2DArray<int>(file,X);
//Zum Testen anzeigen if(fileArray!=NULL) { for(i=0;i<X;++i) { for(size_t j=0;j<Y;++j) cout<<fileArray[i][j]<<' '; cout<<endl; } delete2DArray<int>(fileArray,X); }
return 0; }
|
Diese Lösung arbeitet halt wirklich mit Arrays,und setzt voraus dass die Datei "passend" die Werte für das Array liefert.Solange die Datei nur über die beiden Funktionen "bearbeitet" wird sollte das gegeben sein. Kannst dir langfristig ja mal die Containerklassen der STL anschauen.Die bieten einiges mehr an Komfort und Sicherheit. Die Funktionen würden prinzipiel auch mit float,double char etc. funktionieren.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes. |