計算の時 – プログラミング – Home

通知
すべてクリア

[解決済] 計算の時


京平
 京平
(@京平)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

すいません。
こちらの文章でお願いします。

以下のプログラムにおいて、CDATAのループが行われるたびにかかった時間を表示したい
のですが、うまい方法が思いつきません。皆様の力を貸してください。宜しくお願いし
ます。

もう少し詳しくお話しますと、今のプログラムでは
1が150回出て来た後に2が150回・・・といったようにプロンプトに出力されると思いま
す。私は1が150回出たときにこの計算にかかった時間、2が150回でたときにかかった時
間・・・続く・・・をそれぞれプロンプトに出力したいです。
開発環境 WIN XP professional
VC++6.0 コンソールアプリです。
本当に宜しくお願いいたします。
#include stdafx.h
#include <stdio.h>
#include <time.h>

#define BDATA 150

#define CDATA 150

int ADATA[BDATA][CDATA];
int main(void)
{

int i,h,a;
long startTime,endTime;
double dt;

startTime=clock();//現在時刻 ミリ秒単位

a=0;
//ADATA[BDATA][CDATA]=0;
for (i=0; i < BDATA; i++){
a=a+1;

for (h=0; h < CDATA; h++){
ADATA[i][h]=ADATA[i][h]+a;

printf(%d\n,ADATA[i][h]);

}//C

}//B

endTime=clock();
dt=(endTime-startTime)/1000.0;//計算時間 秒単位
printf(計算時間は %6.3lf秒,dt);

return 0;

}//main


引用未解決
トピックタグ
monkey
 monkey
(@monkey)
ゲスト
結合: 21年前
投稿: 70
 

内側のループの前と後でclock関数で時間を取得して,その差を表示するだけで良いので
は?

参考:
clock関数の戻り値の型はclock_t型
1秒あたりクロック経過時間数は処理系依存(1000とは限らない)なの
で,CLOCKS_PER_SECを使うのが良い

#include <stdio.h>
#include <time.h>

#define BDATA 150
#define CDATA 150
int ADATA[ BDATA ][ CDATA ];

int main()
{
int i, h, a = 0;
clock_t s0, e0, s1, e1;
double dt;

s0 = clock();
for( i = 0; i < BDATA; ++i )
{
a = a + 1;
s1 = clock();
for( h = 0; h < CDATA; ++h )
{
ADATA[ i ][ h ] = ADATA[ i ][ h ] + a;
printf( %d\n, ADATA[ i ][ h ] );
}
e1 = clock();
dt = (double)( e1 - s1 ) / CLOCKS_PER_SEC;
printf( %6.3lfsec.\n, dt );
}
e0 = clock();
dt = (double)( e0 - s0 ) / CLOCKS_PER_SEC;
printf( %6.3lfsec.\n, dt );
return 0;
}


返信引用
京平
 京平
(@京平)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

出来ました。
助かりました。本当に有難うございました。
あと、CLOCKS_PER_SECのアドバイスも有難うございました。
心より、お礼申し上げます。
有難うございました。


返信引用
京平
 京平
(@京平)
ゲスト
結合: 21年前
投稿: 3
Topic starter  

解決です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました