ich habe um mich ein bisschen mit dem iostream zu spielen (also rein zu übungszwecken, das programm erfüllt keinen tieferen sinn) ein programm geschrieben das folgendes tut:
es liest eine zahl x ein, schreibt in eine datei dann alle zahlen von 1 bis x (also bei 3 wären das 1,2 und 3 z.B.). dann liest es diese werte wieder ein und addiert sie.
also gleich vorweg: ich weiß dass das viel elegeanter und kürzer funktioniert, wie gesagt: ich wollte einfach nur eine übung mit in dateien schreiben und aus dateien wieder auslesen.
so, die frage gleich vorweg: die summe ist immer genau um den wert x zu hoch. ich habe mir jetzt mal mit dem korrekturterm „summe - x“ geholfen. aber wieso tut es das?
der code:
#include \<iostream\>
#include \<fstream\>
#include \<string\>
using namespace std;
int main()
{
int x=0;
int zahler=1;
int y=0;
int summe=0;
cout \<\< "einen wert eingeben" \<\< endl;
cin \>\> x;
fstream dataWrite; //einen strom erstellen
dataWrite.open("zahlen.txt", ios::out); //eihne datei erzeugen auf die ausgegeben wird
//Werte erzeugen und auf datei ausgeben
for(int i=1; i \<= x; i++)
{
dataWrite \<\< zahler \<\< endl;
zahler=zahler+1;
}
dataWrite.close();
cout \<\< " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"\<\< endl;
//Werte wieder einlesen und verarbeiten
dataWrite.open("zahlen.txt", ios::in);
while(!dataWrite.eof())
{
dataWrite \>\> y;
cout \<\< y \<\< endl;
summe = summe + y;
}
dataWrite.close();
cout \<\< "--------" \<\< endl;
cout \<\< summe-x \<\< endl;
//cout \<\< "die Summe aller zahlen bis - " \<\< x \<\< " - betraegt " \<\< summe-x \<\< endl;
return 0;
}
\<small\>
\</small\>vielen dank für nützliche antworten.