|
|
[решено] Написание секундомера в консоли.
вот написал таймер, ток не могу придумать как остановить.
Помогите.
Код:
//STOPWATCH.CPP
//Снкундомер в консоли.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
#include <time.h>
void wait(int seconds)
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while ((clock() < endwait)) {}
}
void printStopWatch(int seconds = 0, int status = 0)
{
char *ptr[10] = {"СЕКУНДОМЕР", "РАБОТАЕТ", "CТОП"};
cout << "********************" << endl;
cout << "********************" << endl;
cout << "| " << setw(10) << *(ptr+status) << " |" << endl;
cout << "| " << setw(2) << seconds/60 << " : "
<< setw(2) << ((seconds < 60) ? seconds : seconds%60) << " |" << endl;
cout << "********************" << endl;
cout << "********************" << endl;
}
int main()
{
setlocale(LC_ALL, ".1251");
cout << "Приложение секундомер" << endl;
int n = 0;
bool status = true;
printStopWatch(0,0);
cout << "Нажмите клавишу Enter для начала...";
cin.get();
while(status != false)
{
system("cls");
printStopWatch(n,1);
wait (1);
n++;
}
printStopWatch(n, 3);
return 0;
}
|
по задумке моей надо изменить bool ststus в true чтоб остановить
|
Можно было бы нажать на кнопку Pause(Break), правда всё исчезает...
|
Если нажать Pause(Break) у меня не чего не исчезает, программа останавливается. И продолжает работать дальше после нажать любой другой. Как сделать что бы хотя бы после нажатия "любой другой" останавливалась навсегда?
|
Может сделать в визуальном режиме?
|
ЭВРИКА РАБОТАЕТ!!!!!!!
Код:
//STOPWATCH.CPP
//Снкундомер в консоли.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
#include <time.h>
#include <windows.h>
void printStopWatch(int seconds = 0, int status = 0)
{
system("cls");
char *ptr[10] = {"СЕКУНДОМЕР", "РАБОТАЕТ", "CТОП"};
cout << "********************" << endl;
cout << "********************" << endl;
cout << "| " << setw(10) << *(ptr+status) << " |" << endl;
cout << "| " << setw(2) << seconds/60 << " : "
<< setw(2) << ((seconds < 60) ? seconds : seconds%60) << " |" << endl;
cout << "********************" << endl;
cout << "********************" << endl;
if(status==0)
cout << "Нажмите клавишу Enter для начала...";
if(status==1)
cout << "Нажмите клавишу Enter для остановки...";
}
void wait(int seconds)
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while((clock() < endwait)){ }
return;
}
int main()
{
setlocale(LC_ALL, ".1251");
cout << "Приложение секундомер" << endl;
int n = 0;
bool status = true;
printStopWatch(0,0);
cin.get();
while(status != false)
{
printStopWatch(n,1);
wait(1);
n++;
if(GetKeyState(VK_RETURN) == false)
status=false;
}
printStopWatch(n, 2);
system("pause");
return 0;
}
правда, через раз, резче Enter надо нажимать ☺☺☺☺
вот более совершенный цикл
Код:
while(status != false)
{
printStopWatch(n,1);
wait(1);
if(GetKeyState(VK_RETURN) == false)
{
status=false;
break;
}
n++;
}
|
ха облазил весь рунет, это наверное единственный секундомер в консоли :)
|
Время: 07:01.
© OSzone.net 2001-