2013-06-07 2 views
-5

Напишите программу часов для достижения следующей функции: a) Нажмите любую клавишу, чтобы запустить таймер; b) Нажмите клавишу «S», чтобы запустить таймер, нажмите кнопку «E», чтобы остановить таймер или когда время 00:00:00 часов.Создание тактовой программы

Вот то, что я до сих пор

#include <stdio.h> 
#include <windows.h> 
#include <conio.h> 
main() 
{ 
long int t; 
int flag =0; 
t = 86400; 
printf("press S start, press E stop\n"); 
while(1) 
{ 
    if (kbhit()== 'S' || kbhit() == 's') 
    flag =1; 
    if (getch() == 'E' || getch() == 'e') 
    { flag =0; 
    continue; 
    } 
    if(t <= 0) 
    break; 
    if(flag == 1) 
    { 
    t=t-1; 
    Sleep(1000); 
    printf("%d ",t); 
    } 
} 
} 

Ну, я не знаю, как добиться контроля function.How можно нажать «E», чтобы дать остановки таймера, и нажмите «S 'снова запустите таймер.

Я новичок и не могу получить правильную программу снова и снова. Я надеюсь, что вы можете мне помочь. Благодаря!

+8

Покажите нам свой код, чтобы мы могли показать вам, что с ним не так. Мы не будем делать домашнее задание для вас. – Renan

+0

Отображение вашего кода кто-то может помочь –

+0

#include #include #include основной() { долго Int т; int flag = 0; t = 86400; printf («нажмите S start, нажмите E stop \ n"); while (1) { if (kbhit() == 'S' || kbhit() == 's') flag = 1; if (getch() == 'E' || getch() == 'e') {flag = 0; продолжить; } if (t <= 0) break; if (флаг == 1) { t = t-1; Сон (1000); printf ("% d", t); } } } – user2463906

ответ

1

Вы звоните kbhit() дважды, только один раз необходим для каждого цикла. Он не возвращает char.
Вы звоните getch() дважды, вам нужно только один раз за цикл.
Вы должны улучшить, что означает flag. Возможно, измените на StoppedFlag.

while (1) { 
    if (kbhit()) { 
    char ch = getch(); 
    if ((ch == 'S') || (ch == 's')) { 
     flag = 0; 
    } 
    else if ((ch == 'E') || (ch == 'e')) { 
     flag = 1; 
    } 
    } 
    else { 
    if(t <= 0) { 
     break; 
    } 
    if (flag == 0) { 
     t=t-1; 
     Sleep(1000); 
     printf("%ld ", t); 
    } 
    } 
} 
+0

Спасибо за ваш ответ. Я уже решил эту проблему. – user2463906

Смежные вопросы