PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Programm speichert nur die erste Zeile vom Array


Gretschy
2007-11-24, 15:04:08
Ich habe für die FH ein Programm schreiben müssen, welches Zufallszahlen erzeugt und wollte nun diese in eine Datei speichern.
Irgendwie speichert es aber nur immer die erste Zeile. Es wäre nett, wenn jemand einen Tipp hat, was da falsch läuft.
Ich habe C++ erst seit 3 Wochen und bin noch nicht so fit.
Der Teil mit der Dateiausgabe befindet sich ganz unten.


//---------------------------------------------------------------------------
//Programm zur Zufallszahlenberechnung
//
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
//Einbindung der Bibliotheken
#include <cstdlib.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <conio.h>
#include <fstream>
using namespace std;

//---------------------------------------------------------------------------
// Konstanten und Funktionsprototypen
const int MAXANZ=100;
void zufallsZahlen(int feld[], int anz);
void zufallsZahlenAusgabe (int feld[], int anz);
void zufallsZahlenSpeichern (int feld[], int anz);
//-----------------------------------------------------------------------------
//Main Funktion

int main()
{
int anz;
int feld[MAXANZ]={0};
randomize (); //randomizer initialisieren
while (true)
{
cout<<"\nWas wollen Sie tun?\n\n";
cout<<"Neue Zufallswerte erzeugen(n)\n";
cout<<"Neuen Wert am Tabellenende eingeben (w)\n";
cout<<"Daten aus Datei laden (l)\n";
cout<<"Daten in Datei speichern (s)\n";
cout<<"Programm beenden (b)\n";
cout<<"\nEingabe: ";
char c=getch(); //Menü Auswahl über switches b/n/w


switch (c)

{
case 'b': case'B': cout<<"Schließe die Anwendung";
return 0;

case 'n': case'N': system ("cls");
cout<<"Wieviele Meswerte wollen Sie erzeugen? (Maximal 100 Werte!!): ";
cin >>anz;
if (anz>MAXANZ) // sezte anz= 100, wenn anz größer 100
{
anz=MAXANZ;
}
zufallsZahlen (feld,anz); // Aufruf des Zufallszahlengenerators
zufallsZahlenAusgabe (feld,anz); //Aufruf der Zufallszahlenausgabe
break;

case 'w': case 'W': { if (anz<MAXANZ)
{ cout<<"\nWert eingeben: ";
int wert;
cin>>wert; //wert einlesen, der angehängt werden soll
feld [anz]=wert; //an der stelle anz wird "wert" geschrieben
anz++; //anz wird um eins erhöht, da wert dazugekommen ist
zufallsZahlenAusgabe (feld,anz); //gibt die Zahlen aus
break;
}
else
{cout<<"Tabelle ist voll, bitte nicht mit mehr als 100 Werten fuellen!\n";}
}

case 's': case 'S': {zufallsZahlenSpeichern (feld,anz);
}



}
}





}
//---------------------------------------------------------------------------
//Funktionsprototyp für die Zufallszahlengenerierung

void zufallsZahlen(int feld[], int anz)
{
int i=0;
while (i<anz)
{feld[i]=(rand()%1000);
i++;


}
}
//Funktionsprototyp für die Ausgabe
void zufallsZahlenAusgabe (int feld[],int anz)
{

for (int i=0;i<anz;i++)
{
cout<<"Zahl "<<i+1<< " : "<<feld[i]<<endl;

}

}

void zufallsZahlenSpeichern (int feld[], int anz)
{
fstream datei;
for (int i=0;i<anz; i++)
{
datei.open("Messwerte.txt", ios::out);
datei << "\nZeile: "<<i+1<< " Wert: "<<feld[i]<<"\n";
}
datei.close();
}

TheGamer
2007-11-24, 15:10:02
Ich habe für die FH ein Programm schreiben müssen, welches Zufallszahlen erzeugt und wollte nun diese in eine Datei speichern.
Irgendwie speichert es aber nur immer die erste Zeile. Es wäre nett, wenn jemand einen Tipp hat, was da falsch läuft.
Ich habe C++ erst seit 3 Wochen und bin noch nicht so fit.
Der Teil mit der Dateiausgabe befindet sich ganz unten.


//---------------------------------------------------------------------------
//Programm zur Zufallszahlenberechnung
//
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------
//Einbindung der Bibliotheken
#include <cstdlib.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <conio.h>
#include <fstream>
using namespace std;

//---------------------------------------------------------------------------
// Konstanten und Funktionsprototypen
const int MAXANZ=100;
void zufallsZahlen(int feld[], int anz);
void zufallsZahlenAusgabe (int feld[], int anz);
void zufallsZahlenSpeichern (int feld[], int anz);
//-----------------------------------------------------------------------------
//Main Funktion

int main()
{
int anz;
int feld[MAXANZ]={0};
randomize (); //randomizer initialisieren
while (true)
{
cout<<"\nWas wollen Sie tun?\n\n";
cout<<"Neue Zufallswerte erzeugen(n)\n";
cout<<"Neuen Wert am Tabellenende eingeben (w)\n";
cout<<"Daten aus Datei laden (l)\n";
cout<<"Daten in Datei speichern (s)\n";
cout<<"Programm beenden (b)\n";
cout<<"\nEingabe: ";
char c=getch(); //Menü Auswahl über switches b/n/w


switch (c)

{
case 'b': case'B': cout<<"Schließe die Anwendung";
return 0;

case 'n': case'N': system ("cls");
cout<<"Wieviele Meswerte wollen Sie erzeugen? (Maximal 100 Werte!!): ";
cin >>anz;
if (anz>MAXANZ) // sezte anz= 100, wenn anz größer 100
{
anz=MAXANZ;
}
zufallsZahlen (feld,anz); // Aufruf des Zufallszahlengenerators
zufallsZahlenAusgabe (feld,anz); //Aufruf der Zufallszahlenausgabe
break;

case 'w': case 'W': { if (anz<MAXANZ)
{ cout<<"\nWert eingeben: ";
int wert;
cin>>wert; //wert einlesen, der angehängt werden soll
feld [anz]=wert; //an der stelle anz wird "wert" geschrieben
anz++; //anz wird um eins erhöht, da wert dazugekommen ist
zufallsZahlenAusgabe (feld,anz); //gibt die Zahlen aus
break;
}
else
{cout<<"Tabelle ist voll, bitte nicht mit mehr als 100 Werten fuellen!\n";}
}

case 's': case 'S': {zufallsZahlenSpeichern (feld,anz);
}



}
}





}
//---------------------------------------------------------------------------
//Funktionsprototyp für die Zufallszahlengenerierung

void zufallsZahlen(int feld[], int anz)
{
int i=0;
while (i<anz)
{feld[i]=(rand()%1000);
i++;


}
}
//Funktionsprototyp für die Ausgabe
void zufallsZahlenAusgabe (int feld[],int anz)
{

for (int i=0;i<anz;i++)
{
cout<<"Zahl "<<i+1<< " : "<<feld[i]<<endl;

}

}

void zufallsZahlenSpeichern (int feld[], int anz)
{
fstream datei;
for (int i=0;i<anz; i++)
{
datei.open("Messwerte.txt", ios::out);
datei << "\nZeile: "<<i+1<< " Wert: "<<feld[i]<<"\n";
}
datei.close();
}

Is dir schonmal aufgefallen das du anz mal die Datei Messwerte.txt aufmachst ;) ;D Evt. hilft dir diese Aussage ;)


Noch was, mach aus dem iostream.h ein iostream


Ja und was den Rest angeht, dass mach ich an den 3 Wochen fest :)

Gretschy
2007-11-24, 18:45:05
hat geholfen... dankeschön.
Was ist denn mit dem Rest? Bin für jeden Tipp dankbar, der mich zu einem besseren Menschen macht!;)
Gruß, Fabian