ページ 11

ストップウォッチ作成

Posted: 2007年10月08日(月) 20:10
by ナナイ
はじめまして。
C言語の実力は初心者程度なのですが質問があります。
題の通りなのですが、ストップウォッチって作成可能ですか?
クリックするとカウントを開始して、もう一回クリックすると止まる。
という感じで作りたいのですが。

Re:ストップウォッチ作成

Posted: 2007年10月08日(月) 20:35
by 管理人
ストップウォッチは簡単に出来ますよ。

time.hをインクルードすることで使えるようになるclock関数を使って今の時間を取得し、
今の時間 - 過去に取得した時間
を計算すればその間の時間が出ます。
#include <stdio.h>
#include <time.h>

int main(){
	clock_t t;
	printf("エンターを押してください。\n");
	getchar();//入力を待つ
	t = clock();//時間を格納
	printf("計測中。エンターを押してください。\n");
	getchar();//入力を待つ
	printf("%.3f秒\n",(clock()-t)/(double)CLOCKS_PER_SEC);
}

Re:ストップウォッチ作成

Posted: 2007年10月08日(月) 20:57
by バグ
あら?先を越されてしまいましたか…(苦笑)
せっかくなので、乗せておきます。
#include	<time.h>
#include	<conio.h>
#include	<stdio.h>

clock_t	Elapse(clock_t Start);
void	Start(clock_t* pStart);

int main(void)
{
	clock_t	ctStart, ctNowTime = 0;

	while (ctNowTime <= 99999)
	{
		Start(&ctStart);

		while (kbhit() == 0)
		{
			printf("%.3f\r", (double)((ctNowTime + Elapse(ctStart)) / 1000.0f));
		}

		getc(stdin);
		ctNowTime += Elapse(ctStart);

		while (kbhit() == 0);
		getc(stdin);
	}

	return 0;
}

// 計測開始
void Start(clock_t* pStart)
{
	*pStart = clock();
}

// 経過時間(msec)
clock_t Elapse(clock_t ctStart)
{
	return (clock_t)((double)(clock() - ctStart) / (double)(CLOCKS_PER_SEC / 1000.0f));
}

Re:ストップウォッチ作成

Posted: 2007年10月08日(月) 21:01
by バグ
おっと、失礼、<conio.h>は標準関数ではなかったですね。
Windows上では動くはずですが、それ以外の環境では動かないと思います(^_^;)

Re:ストップウォッチ作成

Posted: 2007年10月08日(月) 21:41
by Hermit
VB の様ですが、ソースまで付いてきます。
http://www.vector.co.jp/soft/dl/win95/p ... 46014.html
C、C++ にするのも難しくはなさそうに思います

Re:ストップウォッチ作成

Posted: 2007年10月08日(月) 23:57
by tk-xleader
>クリックするとカウントを開始して、もう一回クリックすると止まる。

クリックとなるとAPI使わなきゃ無理です。とりあえずサンプルプログラム組んで見ましたので、(WinAPIです)ご覧下さい。

Re:ストップウォッチ作成

Posted: 2007年10月09日(火) 00:58
by ナナイ
to 管理人さま、バグさま、Hermitさま 、tkmakwins15さま

回答ありがとうございます。
皆様の返答をもとに作成してみます。

Re:ストップウォッチ作成

Posted: 2008年9月04日(木) 12:19
by Jack
ストップウォッチなのですが最初のキーの入力とストップウォッチの終了の命令がほしいのですがよろしければ教えていただけないでしょうか。