Knobelaufgabe für Profis
-
Hi Leute ich bin neu hier und habe auch schon das erste Problem wobei ich Eure Hilfe benötige.
Ich schreibe im Moment ein Programm das verschiedene Werte einliest und permanent mit der Systemzeit vergleicht. Findet eine Übereinstimmung mit der Systemzeit statt, so wir der dazugehörige Text ausgegeben. Ja und da liegt auch der Hund begraben. Wenn während des Systemzeitvergleiches eine Eingabe über die Tastatur statt findet, dann wird die Ausgabe übersprungen und man gelangt direkt wieder zum Systemzeitvergleich zurück!
//Start vergleich mit der Sytemzeit weiter = 'j'; y=0; while (weiter == 'j') { for(z=0;z<=0;) { time_t Zeitstempel; tm *nun; Zeitstempel = time(0); nun = localtime(&Zeitstempel); gotoxy(30,10); if (nun->tm_min < 10 && nun->tm_sec < 10) printf("%d.%d.%d - %2d:0%d:0%d", nun->tm_mday, nun->tm_mon+1, nun->tm_year+1900, nun->tm_hour, nun->tm_min, nun->tm_sec); if (nun->tm_min < 10 && nun->tm_sec >= 10) printf("%d.%d.%d - %2d:0%d:%2d", nun->tm_mday, nun->tm_mon+1, nun->tm_year+1900, nun->tm_hour, nun->tm_min, nun->tm_sec); if (nun->tm_min >= 10 && nun->tm_sec < 10) printf("%d.%d.%d - %2d:%2d:0%d", nun->tm_mday, nun->tm_mon+1, nun->tm_year+1900, nun->tm_hour, nun->tm_min, nun->tm_sec); if (nun->tm_min >= 10 && nun->tm_sec >= 10) printf("%d.%d.%d - %2d:%2d:%2d", nun->tm_mday, nun->tm_mon+1, nun->tm_year+1900, nun->tm_hour, nun->tm_min, nun->tm_sec); if (nun->tm_sec == sec[y]) //Bedingung damit die Schleife der Sytemzeit unterbrochen wird MUSS NOCH ERWEITERT WERDEN!!!!!!!!!!!! z=1; Sleep(950); clrscr(); } //Stop
So sieht der Teil aus, der dann übersprungen wird!
gotoxy(37,10); printf("ALARM"); for (a=1;a<=2;a++) { printf("\a"); Sleep(500); } gotoxy(30,12); printf("Zur Alarmdepeche..."); fflush(stdin); _getch(); printf("\nAlarmart:\t%s", art[y]); printf("\nOrt:\t\t%s", ort[y]); printf("\nStrasse:\t%s", str[y]); printf("\nObjekt:\t\t%s", obj[y]); printf("\nInfo:\t\t%s\n\n", text[y]); printf("\nZurueck zur Zeitangabe..."); _getch(); printf("\nZur Sicherheit nochmal druecken ;)"); _getch(); clrscr(); y++;
Ich denke, das jetzt viele mich wieder auf das fflush(stdin) ansprechen werden, aber ich habe diese Forum schon durchsucht und alles was ich gefunden habe ausprobiert!
NIX hat geholfen.
Die Ausgabe ist zwar stehen geblieben, aber ich konnte alle während des Systemzeitvergleiches eingegbenen Zeichen sehen.
Na und das ist ja auch nicht das wahre!!!Ich hoffe ihr könnt mir helfen.
-
Keiner eine Lösung???
-
Probier es mal im C-Forum. Das ist kein C++.
-
Hi!
Meiner Meinung hast du kein Probelm mit dem Programm. Ich hab mir das Programm jetzt nicht so genau angesehen, aber ich nehme mal an, dass die 2 Teile (Alarm und Eingabe) für sich genommen funktionieren.
Ich glaube eher, dass das einlesen dein Programm zu lange Blokiert. Also entweder die Eingabe mit nonblocking machen (kbhit(), wobei das auch nicht so einfach ist bei Terminals unter Linux) oder in 2 Threads oder Prozesse aufsplitten. A musst du dich allerdings dann um die IPC (Inter Process Communication) kümmern.mfg bauerb
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.