habe unten aufgeführtes Programm geschrieben, ich möchte das der die Schleife solange ausführt bis ich eine bestimmte Taste drücke. Dann soll er das programm unterbrechen. Vielleicht fällt euch was dazu ein
# include <iostream.h> # include <conio.h> # include <stdio.h> # include <time.h>
int HSrot() { cout<< "Die Ampel der Hauptstraße ist Rot"; }
int HSgelbrot() { cout<<"Die Ampel der Hauptstraße ist Gelbrot"; }
int HSgelb() { cout<<"Die Ampel der Hauptstraße ist Gelb"; }
int HSgruen() { cout<<"Die Ampel der Hauptstraße ist Gruen"; }
int main() { time_t oldtime = 0; int zaehler; zaehler = 0; int e; do { for (zaehler = 0;zaehler < 20; ++zaehler) { while (oldtime == time(NULL)); oldtime = time(NULL);
if (zaehler==0) { cout<<"\n\n"; // cout<<"\n\nZaehlerstand ist"<<zaehler<<"\n"; HSrot(); }
if (zaehler==4) { cout<<"\n\n"; // cout<<"\n\nZaehlerstand ist"<<zaehler<<"\n"; HSgelbrot(); }
if (zaehler==6) { cout<<"\n\n"; // cout<<"\n\nZaehlerstand ist"<<zaehler<<"\n"; HSgruen(); }
if (zaehler==10) { cout<<"\n\n"; // cout<<"\n\nZaehlerstand ist"<<zaehler<<"\n"; HSgelb(); } if (zaehler==12) { cout<<"\n\n"; // cout<<"\n\nZaehlerstand ist"<<zaehler<<"\n"; HSrot(); } if (zaehler==13) { zaehler=0; } } } while (getchar()!='e');
Spontan fällt mir auf das deine Methoden keinen wert zurückliefern, obwohl du integers als returnvalues definiert hast (void ist wohl sinnvoller).
Wenn du willst das man das Programm zu jedem Zeitpunkt abbrechen kann, nimm einen Thread der ständig abfragt ob eine taste gedrückt wurde.
Wenn du willst das dein Prozess eine gewisse zeit wartet bevor er weiterläuft (also z.B 5 Sekunden warten) ist die Methode "Sleep" ganz hilfreich. -- ...fleißig wie zwei Weißbrote
kannst du oder jemand anderes hier im forum mir zufällig ein Beispiel geben wie das aussehen sollte?? Kenn mich mit der Programmierung nicht so gut aus und in meinen Büchern kann ich dazu nichts finden
# include <iostream.h> # include <conio.h> # include <windows.h>
int main(){
while(true){ cout<< "Die Ampel der Hauptstrasse ist Rot" << endl; Sleep(1000); if(kbhit() && getch()=='e' )break; cout<<"Die Ampel der Hauptstrasse ist Gelbrot" << endl; Sleep(1000); if(kbhit() && getch()=='e')break; cout<<"Die Ampel der Hauptstrasse ist Gruen" << endl; Sleep(1000); if(kbhit() && getch()=='e')break; cout<<"Die Ampel der Hauptstrasse ist Gelb" << endl; Sleep(1000); if(kbhit() && getch()=='e')break;
}
return0; }
Wenn du die wartezeiten erhöhst, dann dauert die möglichkeit des Abbrechen in dieser Version leider auch länger. Wenn du das nicht willst, musst du jeweils eine Schleife verwendet die z.B.: Sleeps von nur 20ms verwendet und diese Schleife halt gewünschteZeit/20 mal durchläuft. -- ...fleißig wie zwei WeißbroteDieser Post wurde am 15.04.2003 um 20:12 Uhr von Heiko editiert.