前提・実現したいこと
『新・明解C言語 中級編』を解いています。
サンプルコードと見比べてみたのですがミスが見つかりませんでした…。
質問させてください!
ランダムに生成した3桁の数字3つの和を入力して、正解するまでにかかった時間によって表示内容を変えるプログラムを作っています。
clock関数を使ってクロック数を計算した後、それをdouble型に変換してprintf関数で表示させたいのですが、表示がうまくいきません。
発生している問題・エラーメッセージ
1秒以上かかっているにも関わらず、「0.0秒」と表示されてしまう。
該当のソースコード
C
1# include <time.h> 2# include <stdio.h> 3# include <stdlib.h> 4 5int main(void) { 6 7 int a, b, c;/* 加算する数値 */ 8 int x; /* 読み込んだ値 */ 9 clock_t start, end;/* 開始時間と完了時間 */ 10 double req_time; /* かかった時間 */ 11 12 srand(time(NULL));/* 乱数の種をセット */ 13 14 a = 100 + rand() % 900; // 100~999 15 b = 100 + rand() % 900; // 100~999 16 c = 100 + rand() % 900; // 100~999 17 18 printf("%d + %d + %dは何ですか:", a, b, c); 19 20 start = clock();// 計測開始 21 while(1) { 22 scanf("%d", &x); 23 if (x == a + b + c) { 24 break; 25 } 26 printf("\a違いますよ!\n再入力してください:"); 27 } 28 end = clock();//計測終了 29 30 req_time = (double)(end - start) / CLOCKS_PER_SEC; 31 printf("%.1f秒かかりました。\n", req_time); // なぜか0.0秒で表示されてしまう 32 if (req_time > 30.0) { 33 printf("時間がかかりすぎです。\n"); 34 } else if (req_time > 17.0) { 35 printf("ほう。\n"); 36 } else { 37 printf("素早いな。\n"); 38 } 39 return 0; 40}
下から10行目が、0.0秒と表示されてしまいます。
試したこと
C
1req_time = (double)(end - start) / CLOCKS_PER_SEC;
に()を追加してみる。↓
C
1req_time = (double)((end - start) / CLOCKS_PER_SEC);
C
1 printf("%.1f秒かかりました。\n", req_time); // なぜか0.0秒で表示されてしまう
を「%.1lf」に変えてみる。↓
C
1 printf("%.1f秒かかりました。\n", req_time); // なぜか0.0秒で表示されてしまう
どなたか、回答をお願いいたしますm(._.)m
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/26 10:47
2019/01/26 13:57
2019/01/27 08:25