Array..mal wieder
-
Morgen..ich bins mal wieder...
Kleine Frage:
ICh wollte aus einer .txt datei zeile für zeile float zahlen in ein array einlesen.
Bsp.: datei hat 33 zeilen -> also brauch ich ein array mit min. 34 zeilen, richtig? das leg ich ja dann über float_t x[33] fest, oder?Jetzt will ich aber einen schritt weiter gehn, und das array dynamisch der zeilen anzahl anpassen, also wenn die datei jetzt 100 zeilen hat...wie ist das realisierbar?
Und über welche befehle schreib ich dann die zahlenwerte immer in das näxte element...ich schätze mal das muss mit ner FOR-schleife gemacht werden?!?
Vorab mal
Thx 
EOF
-
Nun, wenn du 33 Zeilen hast, dann braucht dein Array auch nur 33 Elemente.
Bei char Arrays braucht man immer ein Element mehr für den Terminator '\0'.Du kannst dir das Array mit new anlegen.
int nZeilenanzahl = getZeilenAnzahl(DATEI); float* pFloats = new float[nZeilenanzahl]; for(int i = 0; i < nZeilenanzahl; ++i) { pFloats[i] = getZeilenWert(DATEI, i); }So würde es klappen - wobei die getZeilenXXX-Methoden nur zur Darstellung dienen.
-
Da du hier im C++ - Forum nachfragst würde ich dir dringend die Verwendung von
STL-Containern empfehlen.
-
OHJEE...bin jetzt auch nich grad ein gelernter c++ programmer

Aber ich habs hinbekommen...
aber noch ne ganz andere frage:
und zwar sind die zahlen die ich einlesen will alle negative float zahlen...
kann ich die überhaupt sinnvoll einlesen...weil bei der ausgabe auf den schirm klatscht er mit immer so was wie ...e-045 raus ?!?Was kamm man da machen?
EOF
-
Also hier mal mein zusammengeschusterter C-Code

{ #include "iostream.h" #include "fstream.h" int i, zeile = 0; int eing = 0; char x[255]; char Temp[80]; cout<<Temp<<endl; //In Temp steht der Pfad der zu öffnenden Datei (ist variabel, deshalb char) ifstream inn; inn.open(Temp); signed Float_t *z = new signed Float_t[zeile]; //iss halt die frage obs signed float gibt while (!inn.eof()) { inn>>x; zeile++; } //benutz ich um überhaupt die anzahl der zeilen zubekommen for (i=0 ; i<zeile ; i++) { inn >> z[i]; //hier füll ich den array auf cout<<z[i]<<endl; //unn hier gibt er mir alles nur nich die richtigen werte zurück } cout<<zeile<<endl; cout<<Temp<<endl; return 0; }In der datei stehen die werte so drin:
-74.14
-73.03
-69.67
-68.96
-66.44
-65.83
-64.14
-63.41
-62.17
-61.63
-60.14
-59.67
-58.22
-57.79
-56.12
...... usw.