[Konsolenanwendung] Anzeige erfolgt erst nach Berechnung

Romeo-G

Mitglied
Hallo,
ich schreibe gerade nen kleines Programm, das mir verschiedenen Programme in unterschiedlichen Zeitabständen ausführt (Fragt nicht nach dem Sinn, will einfach nur mal wieder bischen reinkommen).

Das Programm sieht bisher so aus:

Code:
int main(int argc, char* argv[])
{
int zz;
int i=0;
int eingabe;

start:
	int prog=zufall(1,1);
	switch(prog){
        /* Hier stehen irgendwelche Anweisungen für die Programme*/
        }
	
	zz=zufall(1,15);
	uhrzeit(zz);
	int sleeptime=zz*1000*60;

    cin >> eingabe;
	if(eingabe!=1){
	Sleep(sleeptime);
	goto start;
	}
	else return true;
	
	
	return true;
}

Das Problem ist, dass das Programm zwar ohne die cin Anweisung auch ohne Probleme läuft aber man in der Konsole keine Ausgabe sieht.
Es wird also erst das gesamte Programm berechnet und dann erfolgt die Ausgabe.
Dieses Problem habe ich jetzt erstmal mit der cin-Anweisung unschön umgangen, weil damit die Berechnung gestoppt und die Ausgabe erfolgt.

Habt ihr ein schönere Lösung ohne Eingabe des Benutzers?
Danke Romeo

P.S.: Ich weiss, dass GOTO etc sehr unschön ist. Also bitte keine Kommentar zum Programmierstil =)
 
Mal davon abgesehen das ich keinen Sinn in dem Prog sehen kann, und auch nicht verstehe wieso du ein GOTO benutzt, würde ich mal sagen das dein Programm zu schnell läuft und du einfach die Ausgabe nicht siehst.

Code:
 if(eingabe!=1){
	Sleep(sleeptime);
	goto start;
	}
	else return true;  //macht keinen sinn wenn du eh danach ein return true machst !
 
 
	return true;


also eher so
Code:
 if(eingabe!=1){
	Sleep(sleeptime);
	goto start;
	}
Sleep(6000);  //wartet 6 sekunden 
	return true;


Sollte das nicht gehen zeig mal den Code im Switch Block.
 
Naja ich glaube eher dass ich eine Lösungbrauche die so wie cin die Berechnung unterbricht, damit die Anzeige nachkommt.

Deine Lösung ist nicht wirklich was ich suche, weil die "return true"-Anweisung ja nur ausgeführt wird wenn eine "falsche Eingabe" kommt. Dann wird das Programm mit return true beendet und dann kann es auch sofort beendet werden und nicht erst nach 6 sec.

Trotzdem Danke
Romeo
 
moin


Code:
int main(int argc, char* argv[])
{
int zz;
int i=0;
int eingabe;

while(1)
{
	int prog=zufall(1,1);
	switch(prog){
        /* Hier stehen irgendwelche Anweisungen für die Programme*/
        }
	
	zz=zufall(1,15);
	uhrzeit(zz);
	int sleeptime=zz*1000*60;

    cin >> eingabe;
	if(eingabe!=1){
	Sleep(sleeptime);
                cin.get();
	continue;
	}
	else return 0;
}	
	
	return 0;
}

1. Niemals goto verwenden wenn es nciht anders geht.
2. cin.get() ist vielleicht was du suchst.


mfg
umbrasaxum
 
Danke aber das war es auch nicht.
Mir geht es darum, dass cout seine Ausgaben schreiben kann auch ohne, dass ich die While-Schleife bzw die "GOTO-Schleife" mit cin unterbreche.

Die Eingabe soll also ganz wegfallen und das Programm soll automatisch in unregelmäßigen Zeitabständen verschiedene Programme aufrufen.

Danke,
Romeo
 
moin


Code:
while(1)
{
    //Tue irgendwas......

    if(_kbhit())
    {
        char taste = getch();
        if(taste == 0)
            return 0;
    }
}
Ist es das was du suchst?!


mfg
umbrasaxum
 
Zuletzt bearbeitet:
Zurück