*schnief* nun is das Programm fertig aber es ist das nächste Problem wenn ich mehr als 3 namen generieren will dann geht es nicht mehr es ging aber mal habe schon mit 1000 getestet es hat funktioniert. Ich hatte es nun ein bischen Anschaulich gemacht und nun geht es nicht mehr aber ich kann mir nicht erklären warum es nicht geht könnt ihr mir helfen?
testdatei.open ("wnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei) // sequenz für das öffnen der datei
{
cout << "Erste Datei Fehlerhaft benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Erste Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen2 () //männliche namen öffnen
{
testdatei2.open ("mnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei2) // sequenz für das öffnen der datei
{
cout << "Zweite Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Zweite Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen3 () //nachnamen öffnen
{
testdatei3.open ("nachnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei3) // sequenz für das öffnen der datei
{
cout << "Dritte Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Dritte Datei erfolgreich geoeffnet"<<endl;
}
}
void dateilesen() //weibliche namen lesen
{
while(testdatei.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei, names, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer.push_back(names); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen2() //mänliche namen lesen
{
while(testdatei2.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei2, names2, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer2.push_back(names2); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen3() //nachnamen lesen
{
while(testdatei3.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei3, names3, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer3.push_back(names3); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void random () //random funktion zum generien der zu schreibenden zeilen
{
cout << "Bitte geben Sie die Anzahl der zu generierenden Namen ein." << endl;
cin >> anzahl;
cout << "Die " << anzahl << " Namen werden generiert." << endl;
srand (time(NULL));
//randomzeile für weibliche namen
for (int x=0;x<anzahl;x++) // festlung der anzahl der zu generienden namen
{
randomzahlen.push_back(rand()%puffer.size()); // Zahlen berreich festlegung
//cout << randomzahlen.at(x) << endl;
}
//randomzeile für männliche namen
for (int i=0;i<anzahl;i++) // festlung der anzahl der zu generienden namen
{
randomzahlen2.push_back(rand()%puffer2.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
//randomzeile für nachnamen
for (int k=0;k<anzahl;k++) // festlung der anzahl der zu generienden namen
{
randomzahlen3.push_back(rand()%puffer3.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
}
void weiblichgenerieren() //weiblich namen generieren
{
fstream d; //stream "intetger"
d.open("generate.csv", ios::out); //zu schreibende datei
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;// zufallszeilen auslesen und in datei schreiben
d.close(); //datei stream schließen
ifstream LogFile("c:\\generate.csv");//überprüfen ob datei erstellt wurde
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
void maennlichgenerieren()
{
fstream d;
d.open("generate.csv", ios::out);
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen2.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;
d.close();
ifstream LogFile("c:\\generate.csv");
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
int main(int argc, char *argv[])
{
cout << "~~~~~~~~Herzlich Willkommen beim Namensgenerator~~~~~~~~" << endl << endl;
cout << "Bitte waehlen Sie aus, welches Geschlecht sie generieren moechten." << endl<< endl;
anfang:;
cout << "Geben sie fuer Weiblich eine 1 ein oder fuer Maennlich eine 2." << endl;
int geschlechteingabe;
cout << "Bitte geben sie das gewuenschte Geschlecht an: " ;
cin >> geschlechteingabe;
cout << endl;
if(geschlechteingabe < 1)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe > 2)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe=2)
{
cout<< " Sie haben das maennliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
maennlichgenerieren();
}
else
{
if (geschlechteingabe=1)
{
cout<< " Sie haben das weibliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
weiblichgenerieren();
}
}
}
}
testdatei.open ("wnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei) // sequenz für das öffnen der datei
{
cout << "Erste Datei Fehlerhaft benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Erste Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen2 () //männliche namen öffnen
{
testdatei2.open ("mnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei2) // sequenz für das öffnen der datei
{
cout << "Zweite Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Zweite Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen3 () //nachnamen öffnen
{
testdatei3.open ("nachnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei3) // sequenz für das öffnen der datei
{
cout << "Dritte Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Dritte Datei erfolgreich geoeffnet"<<endl;
}
}
void dateilesen() //weibliche namen lesen
{
while(testdatei.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei, names, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer.push_back(names); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen2() //mänliche namen lesen
{
while(testdatei2.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei2, names2, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer2.push_back(names2); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen3() //nachnamen lesen
{
while(testdatei3.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei3, names3, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer3.push_back(names3); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void random () //random funktion zum generien der zu schreibenden zeilen
{
cout << "Bitte geben Sie die Anzahl der zu generierenden Namen ein." << endl;
cin >> anzahl;
cout << "Die " << anzahl << " Namen werden generiert." << endl;
srand (time(NULL));
//randomzeile für weibliche namen
for (int x=0;x<anzahl;x++) // festlung der anzahl der zu generienden namen
{
randomzahlen.push_back(rand()%puffer.size()); // Zahlen berreich festlegung
//cout << randomzahlen.at(x) << endl;
}
//randomzeile für männliche namen
for (int i=0;i<anzahl;i++) // festlung der anzahl der zu generienden namen
{
randomzahlen2.push_back(rand()%puffer2.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
//randomzeile für nachnamen
for (int k=0;k<anzahl;k++) // festlung der anzahl der zu generienden namen
{
randomzahlen3.push_back(rand()%puffer3.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
}
void weiblichgenerieren() //weiblich namen generieren
{
fstream d; //stream "intetger"
d.open("generate.csv", ios::out); //zu schreibende datei
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;// zufallszeilen auslesen und in datei schreiben
d.close(); //datei stream schließen
ifstream LogFile("c:\\generate.csv");//überprüfen ob datei erstellt wurde
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
void maennlichgenerieren()
{
fstream d;
d.open("generate.csv", ios::out);
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen2.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;
d.close();
ifstream LogFile("c:\\generate.csv");
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
int main(int argc, char *argv[])
{
cout << "~~~~~~~~Herzlich Willkommen beim Namensgenerator~~~~~~~~" << endl << endl;
cout << "Bitte waehlen Sie aus, welches Geschlecht sie generieren moechten." << endl<< endl;
anfang:;
cout << "Geben sie fuer Weiblich eine 1 ein oder fuer Maennlich eine 2." << endl;
int geschlechteingabe;
cout << "Bitte geben sie das gewuenschte Geschlecht an: " ;
cin >> geschlechteingabe;
cout << endl;
if(geschlechteingabe < 1)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe > 2)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe=2)
{
cout<< " Sie haben das maennliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
maennlichgenerieren();
}
else
{
if (geschlechteingabe=1)
{
cout<< " Sie haben das weibliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
weiblichgenerieren();
}
}
}
}
testdatei.open ("wnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei) // sequenz für das öffnen der datei
{
cout << "Erste Datei Fehlerhaft benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Erste Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen2 () //männliche namen öffnen
{
testdatei2.open ("mnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei2) // sequenz für das öffnen der datei
{
cout << "Zweite Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Zweite Datei erfolgreich geoeffnet"<<endl;
}
}
void dateioeffnen3 () //nachnamen öffnen
{
testdatei3.open ("nachnamen.txt", ifstream::in); //variable für die zu öffnende Datei
if (0==testdatei3) // sequenz für das öffnen der datei
{
cout << "Dritte Datei Fehlerhafte benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung
}
else
{
cout << "Dritte Datei erfolgreich geoeffnet"<<endl;
}
}
void dateilesen() //weibliche namen lesen
{
while(testdatei.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei, names, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer.push_back(names); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen2() //mänliche namen lesen
{
while(testdatei2.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei2, names2, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer2.push_back(names2); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void dateilesen3() //nachnamen lesen
{
while(testdatei3.good()) { //while schleife liest datei zeile für zeile aus
getline(testdatei3, names3, ';'); // liest zeilen (zu lesende datei, zu speichernde variable, lese kriterien)
puffer3.push_back(names3); //ausgelesene datein in vector schreiben
//cout << names << endl; // vector ausgabe
}
}
void random () //random funktion zum generien der zu schreibenden zeilen
{
cout << "Bitte geben Sie die Anzahl der zu generierenden Namen ein." << endl;
cin >> anzahl;
cout << "Die " << anzahl << " Namen werden generiert." << endl;
srand (time(NULL));
//randomzeile für weibliche namen
for (int x=0;x<anzahl;x++) // festlung der anzahl der zu generienden namen
{
randomzahlen.push_back(rand()%puffer.size()); // Zahlen berreich festlegung
//cout << randomzahlen.at(x) << endl;
}
//randomzeile für männliche namen
for (int i=0;i<anzahl;i++) // festlung der anzahl der zu generienden namen
{
randomzahlen2.push_back(rand()%puffer2.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
//randomzeile für nachnamen
for (int k=0;k<anzahl;k++) // festlung der anzahl der zu generienden namen
{
randomzahlen3.push_back(rand()%puffer3.size()); // Zahlen berreich festlegung
//cout << randomzahlen2.at(i) << endl;
}
}
void weiblichgenerieren() //weiblich namen generieren
{
fstream d; //stream "intetger"
d.open("generate.csv", ios::out); //zu schreibende datei
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;// zufallszeilen auslesen und in datei schreiben
d.close(); //datei stream schließen
ifstream LogFile("c:\\generate.csv");//überprüfen ob datei erstellt wurde
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
void maennlichgenerieren()
{
fstream d;
d.open("generate.csv", ios::out);
for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen2.at(x)) << ";" << puffer3.at(randomzahlen3.at(x))<<endl;
d.close();
ifstream LogFile("c:\\generate.csv");
if(LogFile)
cout << "Die Datei wurde erstellt bitte bennen Sie Die Datei um" << endl;
}
int main(int argc, char *argv[])
{
cout << "~~~~~~~~Herzlich Willkommen beim Namensgenerator~~~~~~~~" << endl << endl;
cout << "Bitte waehlen Sie aus, welches Geschlecht sie generieren moechten." << endl<< endl;
anfang:;
cout << "Geben sie fuer Weiblich eine 1 ein oder fuer Maennlich eine 2." << endl;
int geschlechteingabe;
cout << "Bitte geben sie das gewuenschte Geschlecht an: " ;
cin >> geschlechteingabe;
cout << endl;
if(geschlechteingabe < 1)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe > 2)
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang;
}
else
{
if (geschlechteingabe=2)
{
cout<< " Sie haben das maennliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
maennlichgenerieren();
}
else
{
if (geschlechteingabe=1)
{
cout<< " Sie haben das weibliche Geschlecht gewählt." << endl <<endl;
dateioeffnen();
dateioeffnen2();
dateioeffnen3();
dateilesen();
dateilesen2();
dateilesen3();
random();
weiblichgenerieren();
}
}
}
}
Das klingt doch nach einem idealen Problemfall um damit zu lernen, wie man einen Debugger benutzt. Damit sollte sich das Problem statt mit 1000 mal testen mit einmal testen lösen lassen. Ist dann auch ein sehr nützliches Wissen für zukünftige, komplexere Projekte.
ich habe mit dem debugger ding von dev c++ jede zeile einzeln überprüft aber er hat mir nirgends gesagt das da irgendwo nen fehler is ich habe nun auch einmal die zeilen auskommentiert wo ich mir gedacht habe das es daran liegen könnte aber es passiert das gleich ...
ich habe mit dem debugger ding von dev c++ jede zeile einzeln überprüft aber er hat mir nirgends gesagt das da irgendwo nen fehler is
Die Fehlerprüfung musst du schon selbst machen. Der Debugger sorgt nur dafür, dass du in Einzelschritten durch dein Programm gehen und dir die Variablenwerte ansehen kannst. Das Denken übernimmt er nicht für dich.
_________________ "Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung.
* die Steuerung des Programmablaufs, insbesondere durch Haltepunkte und die Einzelschritt-Verarbeitung von Befehlen
* das Inspizieren von Daten, z. B. die Register, den aktuellen Programmcode als Assembler oder Hochsprachenquelltext, den allgemeinen Daten in festen und flüchtigen Speichern, der Erzeugung von fortgeschrittenen Daten-Interpretationen etwa durch eine Callstack-Funktionalität oder das Anzeigen von Ein-/Ausgabe-Registern, Tabellen und Hochsprachen-Strukturen
* das Modifizieren von Speichern, z. B. des Hauptspeichers, der externen Ein-/Ausgabe-Zustände und der Register des Prozessorkerns
hmm ok ich habs hin bekommen geht alles nun habe ich schon wieder ein problem...
Ich glaube langsam werde ich für euch lästig...
Hatte ja oben die geschlechts Abfrage mit 1 oder 2 abgefragt sollte da jetzt ein buchstabe eingegeben werden verfällt das programm in eine endlisch schleife ich habe das problem jetzt so gelöst :
Code:
if(geschlechteingabe[1] != "w"||"m")
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht, bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang; // goto marke setzen
}
Code:
if(geschlechteingabe[1] != "w"||"m")
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht, bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang; // goto marke setzen
}
Code:
if(geschlechteingabe[1] != "w"||"m")
{
cout << "!!!!!!!!ACHTUNG!!!!!!!!!"<<endl<<endl;
cout << "Sie haben eine falsche Eingabe gemacht, bitte versuchen sie es noch einmal." << endl<<endl;
goto anfang; // goto marke setzen
}
geschlechtseingabe ist nen array...
also so habe ich ihn gemacht :
Code:
string geschlechteingabe [10];
Code:
string geschlechteingabe [10];
Code:
string geschlechteingabe [10];
aber jetzt ist das Problem auch wenn ich w oder m eingebe verlässt er nicht die if funktion.
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.