Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Написание секундомера в консоли.

Ответить
Настройки темы
C/C++ - [решено] Написание секундомера в консоли.

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


вот написал таймер, ток не могу придумать как остановить.
Помогите.
Код: Выделить весь код
//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;
}

Отправлено: 21:52, 07-08-2010

 

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


по задумке моей надо изменить bool ststus в true чтоб остановить

Отправлено: 21:54, 07-08-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для AlexTNT

Пользователь


Сообщения: 99
Благодарности: 19

Профиль | Отправить PM | Цитировать


Можно было бы нажать на кнопку Pause(Break), правда всё исчезает...

-------
В споре рождается истина.


Отправлено: 18:49, 08-08-2010 | #3


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Если нажать Pause(Break) у меня не чего не исчезает, программа останавливается. И продолжает работать дальше после нажать любой другой. Как сделать что бы хотя бы после нажатия "любой другой" останавливалась навсегда?

Отправлено: 20:01, 08-08-2010 | #4


Аватара для AlexTNT

Пользователь


Сообщения: 99
Благодарности: 19

Профиль | Отправить PM | Цитировать


Может сделать в визуальном режиме?

-------
В споре рождается истина.


Отправлено: 20:31, 08-08-2010 | #5


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


ЭВРИКА РАБОТАЕТ!!!!!!!
Код: Выделить весь код
//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++;
	}
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:25, 11-08-2010 | #6


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


ха облазил весь рунет, это наверное единственный секундомер в консоли

Отправлено: 12:28, 11-08-2010 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Написание секундомера в консоли.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Теория - Написание своей консоли (командной строки) Guest Программирование и базы данных 7 10-11-2010 20:15
CMD/BAT - [решено] Написание Батника или чего нибудь схожего для ребута модема (ADSL) ZTE Spike_LV Скриптовые языки администрирования Windows 5 02-04-2010 13:49
CMD/BAT - [решено] помогите плиз с написание бат файла sergey12989 Скриптовые языки администрирования Windows 7 16-04-2009 11:07
Slackware - [решено] Русификация консоли Naiad Общий по Linux 7 31-01-2009 11:53
[решено] О смене ip c консоли Maeth Microsoft Windows 2000/XP 1 27-05-2007 10:26




 
Переход