Error: _concurrence_unlock_error und :resize ???

Freddycbv

Komplett-PC-Aufrüster(in)
Bei meinem Programm ist grad ein Fehler aufgetaucht, den ich mir nicht erklären kann. Es kommt nämlich an einer bestimmten Stelle im Programm ein Error, der in der Konsole sichtbar ist.
Dort steht geschrieben:

_concurrence_unlock_error

und auch

:resize

Das Prog bleibt da stehen, und wartet auf eine eingabe, wenn man nun etwas eingibt und bestätigt, wird aus der einen Fehlermeldung ne Endlos-Schleife.

An dieser Stelle:

Code:
while(Wahl!=4)
{
    cin>>Wahl;
    switch(Wahl)
    {
        case 3:
            Funktion();
            cout << "Das geht noch!";
            //ERROR
        break;
    }

}
Ich schätze, dass da noch irgendetwas in der Eingabe ist, getline hilft
irgendwie auch nichts....
Kennt jemand die Fehlermeldungen???
Wie kriege ich das 'etwas' aus der Eingabe raus, wenn da der Fehler liegt???:huh:
Schätze mal ist was grundlegendes was ich da verschlafen habe, komme nur nicht drauf:(
Falls ihr die Funktion braucht, kann ich sie auch hochladen.


Danke für Lösungsvorschläge!!!
 
Was ist den Wahl für ein datentyp? Falls es int oder uint ist, hast du die Variable
initialisiert? Ist das ein Schulprojekt und ihr müsst switch/case benutzen? Du kannst
das auf jeden Fall mal mit ner einfachen if - Anweisung testen...So zum Fehler
eingrenzen...Ausserdem brauchst du bei switch / case meines Wissens einen
default Fall...Kann man auch hier nochmal nachlesen:

C++ switch case default

Ich würde es einfach mal mit if versuchen, wenn das auch nicht geht, dann liegt
der Fehler nicht in deiner Verzweigung, würde ich sagen...
 
Danke, mit if funktionierts!!:what::huh:

Ich hab das Prog erst grad eben angefangen, eig sollten noch weitere cases in die switch-Anweisung.

Wahl ist von Typ int, das kann natürlich Fehler geben, da falsche Eingaben noch nicht abgefangen werden.

Ich schätze, dass da irgendwie ne falsche Eingabe drinn ist, die da eig nicht
rein sollte, grad kam (mit case) so nen komischer String, statt ner Fehlermeldung, 1.Zeichen: char(188) 2.Zeichen char(219) und 3.Zeichen: 'F'

Krieg ich die Eingabe irgendwie raus; bzw gibt es bessere Methoden als cin??

Aber vielleicht liegt das Problem ja ganz wo anders...:ugly:
 
cin ist schon ok. Ist schwer dir zu helfen wenn man nicht noch mehr code sieht.
Poste doch einfach mal alles hier:

Pastebin.com - #1 paste tool since 2002!

Unten bei Syntax highlighting c++ auswählen uns los :)

Ach ja so lange du testweise richtige Eingaben machst, sollte das eigentlich kein
Problem sein. Ich bin wie oben schon erwähnt nicht sicher, ob der defualt Fall
zwingend ist. Kannst du ja auch mal testen...

€dit:

Ma ne frage, warum ist das überhaupt in einer Schleife? Denn deine beiden
Bedingungen widersprechen sich ja:

Die while schleife bricht ab, wenn deine Var != 4 ist aber dann greift dein
switch nicht.

switch greift wenn Wahl = 3 ist, aber die schleife läuft ja weiter.

Wenn du willst das da auf jeden fall ne 3 eingegeben wird, sollte es
while (Wahl !=3)
heissen. Aber auch wenn du mehrere Verzweigungen hast, würde ich die
nicht in eine Schleife packen, mach irgendwie wenig Sinn...Ich mein...wenn
du dein Programm verzweigen willst, willst du das idR ja nur einmal und nicht
"unendlich" mal...
 
Zuletzt bearbeitet:
Man braucht bei switch kein Default, aber wenn man jetzt z.B. ein 'F' oder etwas anderes als eine Zahl eingibt, endet das in ner Endlosschleife. Deshalb sollte man immer ein default einbauen.
Versuch auch mal folgendes:

Code:
do
{
     switch (Wahl) 
     {
      case (3): 
          {
              Funktion();
          } break;

     }    
}while (Wahl != 4);

Wenn du so ne Art Menu haben willst, zudem du immer zurückkehrst, kannst du es so machen. Sollte auch mit ner while statt do-while gehen, aber probiers mal so, denn so muss es auf jeden Fall funktionieren. Der Unterschied zwischen while und do-while ist eigentlich nur, dass bei while die Bedingung am Anfang geprüft wird und bei do-while erst am Ende.-> Die do-while wird min. 1 mal ausgeführt.


lg Kok
 
Zurück