Guten Tag liebe Community,
ich habe einmal wieder ein Problem, was ich ohne Hilfe wohl nicht beseitigt bekomme. Dieses Mal habe ich einen kleinen Würfelgenerator geschrieben. Er funktioniert auch weitesgehend, aber ein ein Feature, was ich mir vorstelle, bekomme ich nicht umgesetzt.
Hier mein Code:
Wie ihr dem Code entnehmen könnt, wird der Benutzer gefragt, wie oft gewürfelt werden soll. Das Programm gibt "zufällig" eine Zahl zwischen 1 und 6 (einschließlich 6) aus. Die Werte werden in einer Textdatei gespeichert, die ich zum Testen einfach Würfel.ini genannt habe. Ein kleines Beispiel, falls der Benutzer 6x Würfeln eintippt. Die Würfel.ini sieht dann so aus:
#############################################
6 mal wurde gewürfelt die Ergebnisse sind:
#############################################
1. Wurf: 5
2. Wurf: 4
3. Wurf: 3
4. Wurf: 1
5. Wurf: 2
6. Wurf: 2
Nach diesem Durchlauf, wird der Anwender noch einmal gefragt, ob er die Ergebnisse in der Console sehen möchte, oder einfach selbst die Datei Würfel.ini öffnen und somit Einsicht haben möchte.
Bis hier hin funktioniert alles wie geplant...
Am Ende möchte ich eine Zusammenfassung haben, sodass in der Textdatei folgendes geschrieben wird:
Zusammenfassung:
Die 1 wurde Xmal gewürfelt
Die 2 wurde Xmal gewürfelt
Die 3 wurde Xmal gewürfelt
Die 4 wurde Xmal gewürfelt
Die 5 wurde Xmal gewürfelt
Die 6 wurde Xmal gewürfelt
Also sollte das Programm am Ende jede Zeile auslesen und in einer Variable festhalten, wie oft die 1, 2 , 3, 4, 5, 6 gewürfelt wurde.
Achtung, einfach nur die Zahlen auslesen könnte Schwierigkeiten bereiten, denn falls der 1. Wurf : 1 ist, stehen in der ersten Zeile zwei Einsen, was beim Zählen ja falsch wäre, da sie bis zu der Zeile in Wirklichkeit nur einmal gewürfelt wurde.
Mein Problem ist generell, wie ich Zeilen auslese und auf deren Zeichen prüfe und sie ggf. in eine Variable speichere. Hinzu kommt das oben genannte Problem, dass nicht jeder Wert zur Zählung genommen werden darf, sofern die Ziffer nur den Wurf angibt.
Ich gebe zu, dass es etwas kompliziert ist, zumindest für mich, da ich noch Anfänger bin. Dennoch hoffe ich, dass mir jemand helfen kann und danke im Voraus recht herzlich und wünsche euch ein schönes Wochenende
ich habe einmal wieder ein Problem, was ich ohne Hilfe wohl nicht beseitigt bekomme. Dieses Mal habe ich einen kleinen Würfelgenerator geschrieben. Er funktioniert auch weitesgehend, aber ein ein Feature, was ich mir vorstelle, bekomme ich nicht umgesetzt.
Hier mein Code:
C:
//Includes für den Präprozessor einlesen:
#include <iostream>
#include <time.h>
#include <fstream>
#include <string>
//Ersparung von std:: vor cout und cin:
using namespace std;
//Würfel-Simulations-Programm:
int main()
{
//Titel der Titelleiste ändern:
system("title Würfel-Simulation by Dave");
//Consolenfarbe ändern: Hintergrund schwarz, Schriftfarbe grün:
system("color 02");
// Integer Variable für Würfelanzahl:
int Wurfe=0;
cout<<"Anzahl der W\x81rfe:";
//Benutzer bestimmt nun die Anzahl:
cin>>Wurfe;
//"Zufallsgenerator" wird aktiviert:
srand(time(NULL));
//Textdatei "Würfel.ini" wird im Programmverzeichnis erstellt:
ofstream fout("Würfel.ini");
//Kleines Header für die "Würfel.ini" erzeugen:
fout<<"#############################################\n"<<Wurfe<<" mal wurde gewürfelt die Ergebnisse sind:\n#############################################\n"<<endl;
//Schleife gibt so lange eine Zahl zwischen 1 bis 7 aus, wie vorher angegeben. Dabei steht Zahl unter Zahl bis 1.000.000:
for (int i=1;i<=Wurfe;i++)
{
if (i<10)
{
fout<<" "<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
else if(i>=10 && i<100)
{
fout<<" "<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
else if(i>=100 && i<1000)
{
fout<<" "<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
else if(i>=1000 && i<10000)
{
fout<<" "<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
else if(i>=10000 && i<100000)
{
fout<<" "<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
else if(i>=100000 && i<1000000)
{
fout<<i<<". Wurf: "<<rand()%6+1<<"\n";
}
}
// Schließt "Würfel.ini":
fout.close();
cout<<"\n\n\t\t\t\t°...Fertig!...°\n\n";
cout<<"\x99 \bffnen Sie bitte die Datei \"W\x81rfel.ini\", um die gew\x81rfelten Zahlen anzusehen.\nDie Datei befindet sich im selben Verzeichnis, wo sich auch die \"W\x81rfel.exe\"\nbefindet.\n\n\t"<<endl;
cout<<"M\x94 \bchten Sie die Daten in der Console angezeigt haben: "<<endl;
cout<<"\t\t\t[Ja] oder [Nein]: ";
// Eingabe für Textausgabe in der Console:
string Eingabe;
Eingabe.clear();
cin>>Eingabe;
//Bei Nein:
if (Eingabe=="Nein"||Eingabe=="nein")
{
system("CLS");
cout<<"\n\x99 \bffnen Sie bitte die Datei \"W\x81rfel.ini\", um die gew\x81rfelten Zahlen anzusehen.\nDie Datei befindet sich im selben Verzeichnis, wo sich auch die \"W\x81rfel.exe\"\nbefindet.\n\n\t\n\n"<<endl;
}
//Bei Ja wird der ganze Text der "Würfel.ini" auf der Console ausgegeben:
if (Eingabe=="Ja"||Eingabe=="JA"||Eingabe=="ja"||Eingabe=="jA")
{
system("CLS");
ifstream f; // Datei-Handle
string s;
f.open("Würfel.ini", ios::in); // Öffne Datei aus Parameter
while (!f.eof()) // Solange noch Daten vorliegen
{
getline(f, s); // Lese eine Zeile
cout<< s << endl; // Zeige sie auf dem Bildschirm
}
f.close();
cout<<"\n\nSie k\x94nnen die Daten immer noch in der Textdatei \"W\x81rfel.ini\" ansehen und mit\nihnen arbeiten.\nDie Datei befindet sich im selben Verzeichnis, wo sich auch die \"W\x81rfel.exe\"\nbefindet.\n\n"<<endl;
}
//Bei Eingabe weder Nein noch Ja:
if (Eingabe!="Nein"&&Eingabe!="nein"&&Eingabe!="Ja"&&Eingabe!="JA"&&Eingabe!="ja"&&Eingabe!="jA")
{
system("CLS");
cout<<"\nEntschuldigung, aber Sie haben eine falsche Eingabe get\x84tigt."<<endl;
cout<<"\x99 \bffnen Sie bitte die Datei \"W\x81rfel.ini\", um die gew\x81rfelten Zahlen anzusehen.\nDie Datei befindet sich im selben Verzeichnis, wo sich auch die \"W\x81rfel.exe\"\nbefindet.\n\n\t"<<endl;
}
//Programmende:
system("PAUSE");
return 0;
}
Wie ihr dem Code entnehmen könnt, wird der Benutzer gefragt, wie oft gewürfelt werden soll. Das Programm gibt "zufällig" eine Zahl zwischen 1 und 6 (einschließlich 6) aus. Die Werte werden in einer Textdatei gespeichert, die ich zum Testen einfach Würfel.ini genannt habe. Ein kleines Beispiel, falls der Benutzer 6x Würfeln eintippt. Die Würfel.ini sieht dann so aus:
#############################################
6 mal wurde gewürfelt die Ergebnisse sind:
#############################################
1. Wurf: 5
2. Wurf: 4
3. Wurf: 3
4. Wurf: 1
5. Wurf: 2
6. Wurf: 2
Nach diesem Durchlauf, wird der Anwender noch einmal gefragt, ob er die Ergebnisse in der Console sehen möchte, oder einfach selbst die Datei Würfel.ini öffnen und somit Einsicht haben möchte.
Bis hier hin funktioniert alles wie geplant...
Am Ende möchte ich eine Zusammenfassung haben, sodass in der Textdatei folgendes geschrieben wird:
Zusammenfassung:
Die 1 wurde Xmal gewürfelt
Die 2 wurde Xmal gewürfelt
Die 3 wurde Xmal gewürfelt
Die 4 wurde Xmal gewürfelt
Die 5 wurde Xmal gewürfelt
Die 6 wurde Xmal gewürfelt
Also sollte das Programm am Ende jede Zeile auslesen und in einer Variable festhalten, wie oft die 1, 2 , 3, 4, 5, 6 gewürfelt wurde.
Achtung, einfach nur die Zahlen auslesen könnte Schwierigkeiten bereiten, denn falls der 1. Wurf : 1 ist, stehen in der ersten Zeile zwei Einsen, was beim Zählen ja falsch wäre, da sie bis zu der Zeile in Wirklichkeit nur einmal gewürfelt wurde.
Mein Problem ist generell, wie ich Zeilen auslese und auf deren Zeichen prüfe und sie ggf. in eine Variable speichere. Hinzu kommt das oben genannte Problem, dass nicht jeder Wert zur Zählung genommen werden darf, sofern die Ziffer nur den Wurf angibt.
Ich gebe zu, dass es etwas kompliziert ist, zumindest für mich, da ich noch Anfänger bin. Dennoch hoffe ich, dass mir jemand helfen kann und danke im Voraus recht herzlich und wünsche euch ein schönes Wochenende