zahlenreihen aus datei einlesen, c++
hallo allerseits,
ich hab folgendes problem:
ich programmiere c++ und möchte gerne eine zahlenreihe aus einer datei in eine matrix einlesen.
das klappt soweit auch ganz gut, nur dass die erste zahl in der datei, aus der ich einlese, 81 ist und mein programm diese zahl jetzt in den ersten zwei plätzen meiner matrix ablegt, als 8 und 1.
aber das will ich ja natürlich nicht so haben..
sonst funktioniert das einlesen wunderbar...
vielleicht hat ja einer ne idee?
danke schonmal im voraus,
ost
Antwort schreiben
Antwort 1 von DeluxeStyle vom 24.11.2020, 15:13 Options
wie liest du den die Zahlen ein?
wie erkennst du, dass es sich um eine neue Zahl handelt, also wie ist das Trennzeichen?
Antwort 2 von ost vom 24.11.2020, 15:30 Options
naja,
die zahlen sind in der datei durch leerzeichen voneinander getrennt.
ich öffne die datei mit
ifstream fin ("dateiname");
und lese dann mit zwei schleifen die zahlen mit
fin >> matrix[ i ] [ j ];
in die matrix ein...
grüße
Antwort 3 von DaPascha vom 24.11.2020, 15:35 Options
Ich schätze das Problem ist, dass du den Inhalt der Datei Zeichen für Zeichen einliest. Das würde zumindest erklären, warum er die Zahl 81 als einzelnle Ziffern (8 und 1) erkennt.
DeluxeStyle hat schon das richte Stickwort genannt, du musst die Zahlen so von einander trennen, dass sie zweifellos erkennbar sind.
Im Prinzip würde schon ein Leerzeichen zwischen den einzelnen Werten ausreichen. Wenn du dann eine ganze Zeile aus der Datei liest und das Ergebnis anhand des Leerzeichens zerteilst wirst du deine Werte bekommen.
MfG DaPascha
Antwort 4 von DeluxeStyle vom 24.11.2020, 15:37 Options
genau das gleiche wie DaPascha wollte ich auch anmerken
Antwort 5 von ost vom 24.11.2020, 15:43 Options
hm,
vielleicht hab ich mich missverständlich ausgedrückt, ich meinte dass die WERTE in der datei schon durch leerzeichen getrennt sind. also da steht dann sowas wie:
81 -7 11 17 20 8 -3 -19 -1 20 -13...
und er erkennt ja alle anderen werte einwandfrei, nur den ersten eben nicht...
mir ist allerdings grade aufgefallen, dass in der datei für eine 8x9-Matrix ein wert zu wenig abgespeichert ist.
meine ausgabeschleife hab ich auch von der einleseschleife getrennt, also vielleicht kommt er deswegen durcheinander...
vielen dank auf jeden fall schonmal!
grüße
Antwort 6 von ost vom 24.11.2020, 15:48 Options
ok,
also ich hab jetzt den ersten eintrag in der datei gelöscht, neu eingetragen, den fehlenden wert ergänzt und die datei gespeichert.
und jetzt funktionierts.
danke nochmal und nen schönen tag!
grüße
ost
Antwort 7 von DaPascha vom 24.11.2020, 15:48 Options
Wie hast du denn das Feld deklariert?
Wenn das Feld vom Typ char ist, dann ist der Fehler wohl gefunden. Denn Variablen vom Typ char können nur ein einziges Zeichen als Wert annehmen.
Versuche in diesem Fall dem Feld int (integer) als Typ zuzuweisen.
Sollte das Problem nicht hier liegen, würde es uns um einiges leicher machen dir zu helfen, wenn du uns den gesamten Code-Abschnitt und den Inhalt deiner Datei postest.
MfG DaPascha