Brauche mal euer Hilfe. Schreibe mein ersten Programm das in eine txt Datei schreibt und dann aus dieser txt Datei lesen soll. Das Programm fragt nachzweimal sieben Nummer (x und y) und Speichert es im Vektor und auch in der Datei. Danach wird die Datei wieder geöffnet und es soll die Werte einlesen und in einem Vektor ablegen. Das einlesen habe ich gemacht doch ich will das der Vektor werte ausgegeben werden soll, und da komme ich nicht weiter.
Habe den Code korrigiert. Doch jetzt werden statt der zweimal sieben werte mehr werte ausgegeben und das ist das Problem. Aber wieso?
Wieder Code überarbeitet jetzt werden auch so viele werte ausgeben wie es sein sollte, so weit so gut aber jetzt Stürzt das Programm ab
Code:
using std::ofstream;
using std::endl;
struct Point {
int x, y;
Point(int xx, int yy):x(xx),y(yy) {}
};
int main()
{
ofstream fout( "mydata.txt" );
cout << "Geben Sie bitte den Namen der Ausgabedatei ein:";
string name;
cin>>name;
ofstream ostr(name.c_str());
if(!ostr) error("Fehler beim Oeffnen der Ausgabedatei",name);
vector <Point> original_points;
for( int i = 0; i < 7; ++i )
{
cout << "Bitte geben sie einen x- und einen y-Wert ein: ";
int x,y;
cin>>x>>y;
if (x >= 10000 || x <= 0 || y <= 0 || y >= 10000) {cout << "ungueltiger wert" << endl; break;}
original_points.push_back( Point(x,y) );
}
for (int i = 0; i < original_points.size(); ++i){
fout << original_points[i].x << ',' << original_points[i].y << endl;
cout << original_points[i].x << ',' << original_points[i].y << endl;}
cout << "Geben Sie bitte den Namen der Eingabedatei ein:";
cin>>name;
ifstream istr(name.c_str());
if(!istr) error("Fehler beim Oeffnen der Eingabedatei",name);
vector <Point> processed_points;
int x,y;
if(istr >> x >> y)
processed_points.push_back(Point(x,y));
for (int i = 0; i < processed_point.size(); ++i){
cout << processed_point[i].x << ',' << processed_point[i].y << endl;}
keep_window_open();
return 0;
}
Ergänzung ()
Habe den Code korrigiert. Doch jetzt werden statt der zweimal sieben werte mehr werte ausgegeben und das ist das Problem. Aber wieso?
Code:
cout << "Geben Sie bitte den Namen der Eingabedatei ein:";
cin>>name;
ifstream istr(name.c_str());
if(!istr) error("Fehler beim Oeffnen der Eingabedatei",name);
vector <Point> processed_points;
int x,y;
char c;
while (!istr.eof()){
if(istr >> x >> c >> y)
processed_points.push_back(Point(x,y));
for(vector<Point>::iterator i = processed_points.begin(); i != processed_points.end(); ++i)
cout << i->x << "," << i->y << endl;}
Ergänzung ()
Wieder Code überarbeitet jetzt werden auch so viele werte ausgeben wie es sein sollte, so weit so gut aber jetzt Stürzt das Programm ab
Code:
int main()
{
ofstream fout( "mydata.txt" );
cout << "Geben Sie bitte den Namen der Ausgabedatei ein:";
string name;
cin>>name;
ofstream ostr(name.c_str());
if(!ostr) cerr << "Fehler beim Oeffnen der Ausgabedatei" << name << endl;
vector <Point> original_points;
for( int i = 0; i < 7; ++i )
{
cout << "Bitte geben sie einen x- und einen y-Wert ein: ";
int x,y;
cin>>x>>y;
if (x >= 10000 || x <= 0 || y <= 0 || y >= 10000) {cout << "ungueltiger wert" << endl; break;}
original_points.push_back( Point(x,y) );
}
for (int i = 0; i < original_points.size(); ++i){
fout << original_points[i].x << ',' << original_points[i].y << endl;
cout << original_points[i].x << ',' << original_points[i].y << endl;}
cout << "Geben Sie bitte den Namen der Eingabedatei ein:";
cin>>name;
ifstream istr(name.c_str());
if(!istr) cerr << "Fehler beim Oeffnen der Eingabedatei" << name << endl;
vector <Point> processed_points;
int x,y;
char c;
while (!istr.eof()){
if(istr >> x >> c >> y)
processed_points.push_back(Point(x,y));
for (int i = 0; 7 > processed_points.size(); ++i){
cout << original_points[i].x << ',' << original_points[i].y << endl;}
}