Warum geht mein Programm nicht :( ?
-
Was ist "!-1"?
-
l'abra d'or schrieb:
Was ist "!-1"?

Sollte wahrscheinlich !=-1 oder so werden...
-
Warum die C-Header in überwiegend C++ Quellcode?
Warum Header doppelt?
Warum "dateierstellen()" im C-stil und nicht in C++?MfG f.-th.
-
weil ich es net anders kann und wir nix anderes in der berufschule lernen

Mfg
Barti
-
Hmm Leute ich komm nicht weiter
Ich habe es soweit hinbekommen das die datei sich öffnet das die datei gelesen wird und in einen vector geschrieben wird ich lasse zufalls zahlen generieren die in eine variable gepackt werden und auch eine dazu passende csv.datei wird erstellt. Aber ich weiss net wie ich die strings jetzt wieder aus der dem vector raus kriege und in eine csv datei schreibe, könnt ihr mir nen tipp geben wie ich sowas am besten angehe oder wo ich nach lesen kann wie sowas geht.Das ist der momentane code:#include <cstdlib> #include <iostream> #include <fstream> #include <string> #include <stdio.h> #include <vector> #include <string> #include <fcntl.h> #include <io.h> //#include <sys.h> //#inlcude <stdlib> using namespace std; ifstream testdatei; string names; vector<string> puffer; int newtext; int anzahl; int i; int randomzahlen; string generate; void dateioeffnen () { testdatei.open ("c:\\test.txt", ifstream::in); //variable für die zu öffnende Datei if (0==testdatei) // sequenz für das öffnen der datei { cout << "Fehlerhafte Datein benachrichtigen Sie den Administrator" << endl; //Fehler Benarichtigung } else { cout << "Datei erfolgreich geoeffnet"<<endl; } } void dateilesen() { //dateioeffnen(); 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 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)); for (int x=1;x<=anzahl;x++) // festlung der anzahl der zu generienden namen { randomzahlen = rand()%puffer.size(); // Zahlen berreich festlegung cout << randomzahlen << endl; } } void dateierstellen() { if(newtext = open ("c:\\generate.csv", O_WRONLY|O_CREAT)) !-1 ; ifstream LogFile("c:\\generate.csv"); if(LogFile) cout << "Datei wurde erstellt bitte bennen Sie Die Datei um" << endl; } void generieren() { for ( i = 0 ; i <= randomzahlen; i++ ) { if (i < randomzahlen) { dateilesen(); } else { newtext << names; cout << newtext << endl; } } } int main(int argc, char *argv[]) { dateioeffnen(); dateilesen(); random(); dateierstellen(); generieren(); system("PAUSE"); return EXIT_SUCCESS; } /*for ( i = 0 ; i <= random; i++ ) { if (i < random) { code für durch die textdatei gehen zeile für zeile } else { zeile zwischenspeichern bzw. in neue datei schreiben} } */
-
Hallo,
Lies dir bitte auch mal diesen Artikel aus der FAQ durch
Ströme und Dateien in C++
-
ok ich habe jetzt alles soweit hinbekommen wie es auch funktionieren soll nun habe ich das nächste Problem mit der csv schreiben es funktioniert wunderbar nur ich komme net in die zweite spalte rein.
#include <cstdlib> #include <iostream> #include <fstream> #include <string> #include <stdio.h> #include <vector> #include <string> #include <fcntl.h> #include <io.h> //#include <sys.h> //#inlcude <stdlib> using namespace std; ifstream testdatei; ifstream testdatei2; string names; string names2; vector<string> puffer; vector<string> puffer2; int newtext; int anzahl; int i; vector<int> randomzahlen; vector<int> randomzahlen2; string generate; void dateioeffnen () { testdatei.open ("test.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 () { testdatei2.open ("test2.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 dateilesen() { //dateioeffnen(); 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() { //dateioeffnen(); 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 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)); 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; } 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; } } /*void dateierstellen() { if(newtext = open ("c:\\generate.csv", O_WRONLY|O_CREAT)) !-1 ; ifstream LogFile("c:\\generate.csv"); if(LogFile) cout << "Datei wurde erstellt bitte bennen Sie Die Datei um" << endl; } */ void generieren() { fstream d; d.open("generate.csv", ios::out); for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + puffer2.at(randomzahlen2.at(x)) ; d.close(); } int main(int argc, char *argv[]) { dateioeffnen(); dateioeffnen2(); dateilesen(); dateilesen2(); random(); //dateierstellen(); generieren(); //for ( int x = 0; x < anzahl; x++) cout << " " << puffer.at(x); system("PAUSE"); return EXIT_SUCCESS; } /*for ( i = 0 ; i <= random; i++ ) { if (i < random) { code für durch die textdatei gehen zeile für zeile } else { zeile zwischenspeichern bzw. in neue datei schreiben} } */Explizit geht es um diese Code Stelle:
void generieren() { fstream d; d.open("generate.csv", ios::out); for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + puffer2.at(randomzahlen2.at(x)) ; d.close(); }puffer 2 soll in der 2ten spalte der csv stehen wie kann man das machen ?
Danke schon mal im vorraus
Mfg
Barti20
-
Z.Bsp. so (mit Semikolon separiert)
void generieren() { ofstream d("generate.csv"); for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) << ";" << puffer2.at(randomzahlen2.at(x)) ; }PS.
voraus schreibt sich nur mit einem r.
-
nein geht leider nicht in der csv ist immer noch alles untereinandener
-
hmm hat den keiner ne idee woran es liegt habe nun mittlerweile glaube alles verscuht was ich gefunden habe.
-
Bei C++ alles versucht - der ist gut

for ( int x = 0; x < anzahl; x++) d << puffer.at(randomzahlen.at(x)) + puffer2.at(randomzahlen2.at(x)) << endl;Eine andere Möglichkeit ist "test2.txt" entsprechend schreiben.
MfG f.-th.
-
Bin mir jetzt nicht ganz sicher, ob ich das richtig verstanden hab - ist davon abhängig wie du deine "test" Dateien aufgebaut hast -> entweder so wie zuvor oder
endl
aus der Quelle entfernen.
MfG f.-th.
-
ha es funzt danke ich musst die zeilen umbrüche im txt entfernen dann gings.
Danke
-
*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?
#include <cstdlib> #include <iostream> #include <fstream> #include <string> #include <stdio.h> #include <vector> #include <string> #include <fcntl.h> #include <io.h> using namespace std; ifstream testdatei; ifstream testdatei2; ifstream testdatei3; string names; string names2; string names3; vector<string> puffer; vector<string> puffer2; vector<string> puffer3; int newtext; int anzahl; int i; vector<long int> randomzahlen; vector<long int> randomzahlen2; vector<long int> randomzahlen3; string generate; void dateioeffnen () //weibliche namen öffnene { 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(); } } } } system("PAUSE"); return EXIT_SUCCESS; }und das kommt dabei raus :
http://www.bilder-hochladen.net/files/a72x-j-jpg.html
Schon mal ein ganz dickes dann voraus.
Mfg
Barti
-
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 weiss nicht wie das mit debuggen geht ... bzw was man dazu benutzt
-
Barti20 schrieb:
ich weiss nicht wie das mit debuggen geht ... bzw was man dazu benutzt
Hier kannst du dich schön einlesen in die Welt des Debuggings:
http://magazin.c-plusplus.net/artikel/Debuggen mit VCPlusPlus6
Bezieht sich zwar auf VS6, aber an den Debugging-Mechanismen hat sich wenig geändert.
-
hmm da is nix bei raus gekommen er meint es is alles richtig und nun ?
-
Barti20 schrieb:
hmm da is nix bei raus gekommen er meint es is alles richtig und nun ?
Wie meinst du das? Was genau hast du denn jetzt ausprobiert?
-
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 ...