Fehler beim Einlesen/Speichern einer Textdatei
-
Also ich sehe da keinen Fehler. Bei mir machts mal genau das, das du willst. Wie sieht deine Datei aus?
Ich habs ausgetestet mit Startwert 2, Endwert 10 und folgender File:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Und ja, die innere for-Schleife macht keinen Sinn.
-
Ja, eine doppelte for-Schleife macht keinen Sinn...Hmmm, die is weg.
Das ist ein Teil meiner Datenreihe2.629047437 2.36151741 2.148527167 2.179358509 2.410938306 2.175773803 2.001988031 2.330432407 2.151604774 2.159393912 2.251070034 2.102377046 2.358980503 1.895159115 1.810490532 2.534970835 2.509404754 2.756000896 2.627013337 2.42686611 2.423600968 2.61203175 2.531642209 1.699016583 2.593400598 2.023174805 2.085366795 2.325872781 2.196786756 2.561391992 2.245562417 1.692697802 1.73038663 2.125472948 1.783229976 2.656326519 1.830159194 1.79729102 2.149511844 2.612766942 2.382594145 2.579497535 2.054951064 2.121247737 2.320436235 2.081892243Nehme ich hier zB. 4 und 6 bekomme ich: 2,9...*10^7; 2,36152 und 2,14853
Diese 3 Zahlen sind aber nicht in der 4.,5. und 6.Reihe vorhanden. In der 1. und 2. Zeile sind die da...aber warum werden die denn ausgegeben? Und woher kommt die 1.Zahl.
Manchmal bekomme ich auch, bei höheren Werten (Ich habe 2000 Daten) eine 56... Es existiert aber keine 56...
-
wie wärs damit, während du die zahlen überspringst, nicht chars sondern...hmm... doubles einzulesen?
-
Joa, dann bekommt man eine Lösung -.- Die dann korrekt sein sollte...
Bei mir ist die grad um eine Zeile nach oben verrutscht, liegt aber daran, dass meine Zeilennummerierung nicht das macht, was es mache soll.
Das ist aber ein anderes Thema -.-
-
Schau, du nimmst z.B. Startwert und Endwert = 2. Dann willst du ja 2.629047437 überspringen. Da du aber einen intergralen Typen verwendest, um die Zeilen zu überspringen, passiert folgendes:
Es wird nur die 2 gelesen, und .629047437 bleibt zurück. Beim nächsten Lesen hast du dann 0.629047437 statt 2.36151741.Und wir hatten doch vorhin geklärt, dass Datenreihe.close() unnötig ist.
-
Gugelmoser schrieb:
Schau, du nimmst z.B. Startwert und Endwert = 2. Dann willst du ja 2.629047437 überspringen. Da du aber einen intergralen Typen verwendest, um die Zeilen zu überspringen, passiert folgendes:
Es wird nur die 2 gelesen, und .629047437 bleibt zurück. Beim nächsten Lesen hast du dann 0.629047437 statt 2.36151741.Darauf hätte man selber kommen können...
Und wir hatten doch vorhin geklärt, dass Datenreihe.close() unnötig ist.
Datenreihe.close()
wo??? 
-
Datenreihe.close()
wo??? 
Scherzkeks.Wenn du jetzt noch
-die globalen Variablen lokal machst.
-in der for-Schleife int x=1 und ++x schreibst.
-getch() zum Teufel jagst und statdessencin.ignore(999999,'\n'); cin.get();schreibst, ist der Codeausschnitt ganz annehmbar.
-
Du meinst doch nicht etwa
std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); std::cin.get();?

-
Hehehehe. Eigentlich wollte ich noch schlafen, schließlich muss ich noch um 6.30Uhr ausm Haus. Aber wenn ich solch eine kompetente und schnell Hilfe bekomme und das Programm dann auch noch läuft, dann kann man einfach nicht schlafen gehen

Das mit den globalen Variablen ist ein Problem: Ich brauche diese Variablen auch in anderen Funktionen, dann müsste ich also mit Rückgabeparametern oder überall mit globalen Variablen arbeiten.
Gilt dass int in der for-Schleife auch für mein startwert_daten?
-
cooky451 schrieb:
Du meinst doch nicht etwa
std::cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); std::cin.get();?

Nicht zu vergessen: #include <limits>. 
-
Einstein jr. schrieb:
Gilt dass int in der for-Schleife auch für mein startwert_daten?
Wie meinst du das? Das int bezieht sich nur auf x.
for(int x=1; ... ; ++x) // x ist nun eine lokale Variable, also nur in der for-Schleife sichtbar.
-
Gugelmoser schrieb:
Einstein jr. schrieb:
Gilt dass int in der for-Schleife auch für mein startwert_daten?
Wie meinst du das? Das int bezieht sich nur auf x.
for(int x=1; ... ; ++x) // x ist nun eine lokale Variable, also nur in der for-Schleife sichtbar.Die Frage war hat sich erledigt. Danke.
-
ist es in diesem fall nicht egal, ob man
for(int x=1; ... ; ++x) // x ist nun eine lokale Variable, also nur in der for-Schleife sichtbar.oder
for(int x=1; ... ; x++) // x ist nun eine lokale Variable, also nur in der for-Schleife sichtbar.schreibt?
-
ja, an dem erzeugten code wird sich in diesem fall wohl nichts ändern.