Bildschirmausgabe in *.dat



  • Hier erstmal mein Code:

    #include <iostream>
    #include <ctime>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    		int main() {
    
    			int indikator = 1;
    
    			while(indikator == 1)
    				{
    				cout << endl;
    				cout << "\t\tProgramm zum Turmrechnen\n\n" << endl;
    				cout <<	 "Geben Sie eine Zahl ein:\t";
    				string eingabe; // Variable dekalriert
    				cin >> eingabe;
    
    				if(eingabe == "0") {
    						cout << "Zahlen kleiner oder gleich 0 werden nicht berechnet." << endl;
    						continue;
    				}
    				int speicher;  // Variable dekalriert
    				speicher = atoi(eingabe.c_str());
    
    				if(speicher <= 0) {
    						cout << "Zahlen kleiner oder gleich 0 werden nicht berechnet." << endl;
    						continue;
    						}
    				/* Hier beginnt mein Problem */
    				cout << "\n\t\tMultiplizieren\n" << endl;
    									int zaehler; // Variable dekalriert
    						for(zaehler = 2; zaehler <= 9; ++zaehler)
    										{
    									speicher = zaehler * speicher;
    
    									cout << "\t\t" << speicher << endl;
    							ofstream write;
    							string dateiname = ("turm.dat");
    							write.open(dateiname.c_str(), ios_base::out);
    
    							write << speicher << endl;
    				/* Hier endet mein Problem */
    
    										}
    						int loop;
    						cout <<"\n\t\tDividieren\n" << endl;
    						for(loop = 2; loop <=9; ++loop)
    										{
    							speicher = speicher / loop;
    
    							cout << "\t\t" << speicher << endl;
    										}
    
    			cout << "Programm erneut ausf\x81hren?\tJA == 1; NEIN == 0;\t";
    			cin >> indikator;
    			if(indikator == 0) {
    				cout << "Programm wird beendet ..." << endl;
    
    			int pause;
    			clock_t start;
    			pause = 3*CLOCKS_PER_SEC;
    			start = clock();
    			while(clock() < start+pause)
    				;
    
    			}
    
    			system("cls");
    			}
    
    		return 0;
    		}
    

    Also ein Turm ist eine Zahlen Pyramide.

    Wenn ihr euch wundert warum ich zuerst von einem String einlese und den String dann in eine Integer Variable umwandle, lest folgenden Erklärung:
    Somit kann ich auf ganz einfache Art und Weise verhindern das mein Programm abstürtzt wenn ein Zeichen oder Text eingeben wird!

    Doch nun mein Problem:
    Wie schaffe ich es, dass mein Programm die Daten die auf dem Bildschirm ausgegeben werden in die Datei turm.dat schreibt?
    Jetzt wird nämlich immer nur die letzt Zahl in die Datei geschrieben.

    Anmerkung: Ich schreibe nur die Daten die ich multipliziert werden in die Datei, weil ich es ja erst versuche. Wenn es klappt dann schreibe ich auch die Daten die dividiert werden sollen in die Datei!

    mfg CSS



  • Wieso machst du die Datei in jedem Schleifendurchlauf neu auf?
    Dabei wird die bestehende Datei ständig wieder überschrieben.
    Drum steht nur das letzte Zeichen drinnen.

    1. Möglichkeit (halt ich nicht für sinnvoll):
      Datei im append-Modus öffnen (mit ios::app)

    2. Möglichkeit (besser):
      Datei ausserhalb der Schleife öffnen

    mfg
    Martin



  • Okay, danke!


Anmelden zum Antworten