problem mit switch...



  • moinsen
    ich habe nur mal eine kleine frage, warum gibt folgender code keine ausgabe???

    #include <iostream>
    using namespace std;
    void main()
    {
    	int stat = 0;
    	while (stat == 4)
    	{
    		switch (stat)
    		{
    		case 0:
    			stat = 3;
    			cout << stat;
    			break;
    		case 1:
    			stat = 2;
    			cout << stat;
    			break;
    		case 2:
    			stat = 0;
    			cout << stat;
    			break;
    		case 3:
    			stat = 4;
    			cout << stat;
    			break;
    		case 4:
    			stat = 4;
    			cout << stat;
    			break;
    		}
    	}
    	cin.get();
    }
    

    ich weiß, er ist nicht standartkonform (void main()...), aber das is nur ein test, der code ist ja im grunde auch sinnlos...^^
    also nochmal die frage: warum gibt das keine ausgabe?
    (schlachtet mich bitte, falls das so ein blöder anfängerfehler is... ;-))
    danke schonmal im voraus



  • ganz einfach:

    du setzt stat = 0 und sagst ihm er soll die while-Schleife nur machen wenn stat = 4 ist.
    Ich denke du wolltest eine for-Schleife machen:

    for(int stat=0;stat<=4;++stat)
    {
    //code
    }
    


  • oooooooops, wie dumm...
    nur mein prob ist damit noch nicht gelöst... ich habe mit diesem code versucht, ein problem von mir nachzustellen, ich schreibe mir grade einen kleinen (!!!wirklich klein, ohne dtd´s und son schnickschnack) xml-parser.
    ich gehe so vor, dass ich eine zeile lese und auf bestimmte strings durchsuche (z.b. "<!--" oder auch einfach nur '<'), und daraufhin ein "statusflöag" zu setzen. in einer switch-anweisung, die auf dieses flag prüft, findet dann das richtige parsing statt (z.b. namen eines tags auslesen, attribute extrahieren, etc.)
    in einem case zweig setze ich den status also zu 'Node' (ein neues xml tag wurde entdeckt), ich erreiche dennoch niemals den code, der in der "Node-case" steht...
    (ich wollte hier nicht unbedingt den code posten, da mir das etwas peinlich ist, vlt. ist das ja auch totaler schwachsinn, was ich da gecodet habe... 🙄
    vlt. weiß ja jemand schon so weiter, ansonsten komm ich wohl nich drumrum, den code zu posten...)



  • imho machts mehr sinn ein xml file in einen baum einzulesen und dafür ein stack zu verwenden ( für das auslesen und baum erstellung )



  • es gibt auch

    do
    {
    }while();

    Da wird der Bereich zu deinen switch zumindest einmal betreten.



  • ich gelange ja in mein switch, und in einer case wird das statusflag eben auf "Node" gesetzt, trozdem erreiche ich die nodecase nie...
    btw: das switch steht in einer schleife (while), die prüft, ob das ende der datei erreicht ist (While(!file.eof()), und nachdem das flag auf node ist, wird auch die schleife verlassen, obwohl noch etwas in der datei steht...)
    EDIT uff, wie blöd... hab den fehler gefunden, das ende der datei ist zu dem zeitpunkt doch schon erreicht... dann muss ich wohl zu der while schleife noch eine bedingung hinzufügen, um zu prüfen, dass auch alles gelesene schon verarbeitet wurde.


Anmelden zum Antworten