2011年3月31日 星期四

c++做出類似timer 的東西 cool!

利用時間函數做出以秒為單位來做計數,
標頭檔需 include <ctime>,
以下是簡單的程式碼。

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <conio.h>
using namespace std;

int main()
{
int i,j;
char c;
int a=0;
time_t start,end;

     c=getch();
if(c=='y')
{
while(a!=10)
{
start=time(NULL);

for(i=0;i<10;i++)
for(j=0;j<10;j++)
sin(0.2);

end=time(NULL);
if(difftime(end,start)==1)
{
a=a+difftime(end,start);

cout <<"time= "<<a<<" sec."<<endl;

}
}
}
system("pause");
return 0;
}

在這邊當getch()接受到字元 y 輸入時程式就會開始動作,
我這邊是執行兩個 for 迴圈的計算,然後再求出 "difftime(end,start)" end和start 間的時差,
當兩者相差一秒時,就會有累加的動作。
-----------------------

學長修改:

-----------------------------------

#include "stdafx.h"

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <conio.h>
using namespace std;

int main()
{
int i,j;
char c;
int a=0;
time_t start,end;

     c=getch();

if(c=='y')
{
while(a!=10)
{
start=time(NULL); //based time


end=time(NULL);

while(difftime(end,start)!=1)
end=time(NULL);

a=a+difftime(end,start);

cout <<"time= "<<a<<" sec."<<endl;

}
}

system("pause");
return 0;
}

學長這邊是利用...
while(difftime(end,start)!=1)
end=time(NULL);

取代兩個 for 迴圈的計算,程式就不會有誤差,時間的累嘉也會相對的準確。

2 則留言:

  1. 用心是學習最好的動力
    看到你不斷進步

    回覆刪除
  2. 從這次準時收到三組三創計畫書,證明我們不僅是創意團隊,也是有紀律的團隊,在今日二十一世紀,真正贏家必須兼具創意與紀律。後者是大部分競爭者所遺忘,也是極少數成功者才具備的。

    接下來請於5/1提出完整草稿,給大家互相批評,唯有真正好的作品,才經得起試煉。

    回覆刪除