Warum geht mein Programm nicht :( ?
-
Barti20 schrieb:
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.
-
Wikipedia bringt es auf den Punkt:
Wikipedia schrieb:
Funktionen eines Debuggers:
* 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 :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 :string geschlechteingabe [10];aber jetzt ist das Problem auch wenn ich w oder m eingebe verlässt er nicht die if funktion.
Woran kann das liegen?
-
Barti20 schrieb:
if(geschlechteingabe[1] != "w"||"m")Das geht so nicht (so eine Sprache ist eine Programmiersprache nicht
). Du musst folgendermaßen notieren:if(geschlechteingabe[1] != "w" && geschlechteingabe[1] != "m")Und von goto würde ich dir abraten. Mach es lieber mit einer vernünftigen Schleife (mache... solange die Eingabe nicht "w" oder "m" ist => also eine do-while-Schleife).
-
ok danke
habs jetzt ach mit einer while do schleife gemacht 
-
Wie kann ich verhindern wenn in einen Integer buchstaben eingegeben werden, dass das Programm in eine Endlosschleife springt ?
Sonder statdessen eine Fehler meldung kommt?
Wie muss ich daran gehen?
Also Problem ist wenn man bei mir im Programm bei Anzahl einen Buchstaben eingibt dann wird die Fehler meldung von der If Funktion ausgegeben und das ganze in einer Endlosschleife.
Die Variable anzahl ist ein Integer.
So siehts aus:void random () //random funktion zum generien der zu schreibenden zeilen { anfang:; cout << "Bitte geben Sie die Anzahl der zu generierenden Namen ein." << endl; cout << "Anzahl: "; cin >> anzahl; if(anzahl<=0) { cout << endl; cout << "_______________________________________________________________________________" <<endl << endl; cout << "!!!!!!!!!!FEHLER!!!!!!!!!!!!!!!" << endl << endl; cout<< "Die eingegebene Anzahl liegt unter 0 bitte Versuchen Sie es noch einmal."<<endl <<endl; cout << "_______________________________________________________________________________" <<endl << endl; goto anfang; } 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; }und ja ich weiß goto Befehle sind net gut
Das wird auch noch geändert wenn der rest funktioniert 
Schon mal ein Danke im Voraus
-
Barti20 schrieb:
Wie kann ich verhindern wenn in einen Integer buchstaben eingegeben werden, dass das Programm in eine Endlosschleife springt ?
Du musst den Eingabepuffer löschen (=>Suchfunktion).
-
hmm das klappt nicht bleibt das gleich weder mit
cin.clear();
noch
cin.ignore(cin.rdbuf()->in_avail());
hat mein problem gelöst.
-
Probier's mal so:
std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
-
ahh super es geht.
Aber was genau machen die beiden zeilen ?
Würd schon gern wissen wie mein Programm funktioniert
-
Barti20 schrieb:
ahh super es geht.
Aber was genau machen die beiden zeilen ?
Würd schon gern wissen wie mein Programm funktioniert
Hier findest du alle Antworten: http://www.cppreference.com/wiki/io/start?s[]=cin&s[]=clear