C言語のきほん「暗算トレーニング(1)」

スポンサーリンク
プログラミング C言語

今回は、特定部分の処理に要した時間を計測するプログラムをご紹介しよう。

まず、2桁の整数を2つ加算する問題が提示される。そして、正解を入力すると、解答に要した時間が表示される。

なお、本プログラムは、
 Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で コンパイルしている。

//暗算トレーニング(2桁の整数を2つ加算する)

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

int main(void)
{
    int a,b;
    int x;
    clock_t start,end;  //開始時間、終了時間
    double req_time;    //所要時間

    srand(time(NULL));  //乱数の種を設定

    a = 10 + rand() % 90; //10~99の乱数を生成
    b = 10 + rand() % 90; //10~99の乱数を生成

    printf("%d + %dはいくつですか:",a,b);

    start = clock();    //計測開始

    while (1)
    {
       scanf("%d",&x);
       if(x == a + b)
            break;
        printf("違います!\n再入力してください。\n");
    }

    end = clock();  //計測終了

    req_time = (double)(end - start) / CLOCKS_PER_SEC;

    printf("%f.1秒かかりました。\n",req_time);

    if(req_time > 30.0)
        printf("時間がかかりすぎです。\n");
    else if (req_time > 17.0)
        printf("まあまあです。\n");
    else
        printf("早いです。\n");
    
    return 0;    
    
}

実行結果

70 + 75はいくつですか:145
0.000142.1秒かかりました。
早いです。

ある処理に要した時間は、その時間の開始時刻と終了時刻の「」として、得られる。

本プログラムでは、処理の前後でclock関数を呼び出す。
そして、処理開始時のclock関数の返却値をstartに格納し、処理終了時のclock関数の返却値をendに格納している。
処理に要した時間は、end – startによって得られる。
もっとも、この値の単位は、クロック数なので、CLOCKS_PER_SECで割って秒単位の値に換算する。

暗算に要した時間は、double型の変数req_rimeに格納される。

参考)新・明解C言語 中級編 柴田 望洋(著)

コメント

タイトルとURLをコピーしました