• ベストアンサー

それぞれの暗算にかかった時間

このプログラムは3つの数字の和を暗算させるプログラムです。 プログラムでは、10回の暗算にかかった合計時間を表示させて います。 質問としては「それぞれの回数にかかった時間をそれぞれ 表示させるにはどうすればいいのかか?」です。 #include<stdio.h> #include<time.h> #include<stdlib.h> int main(void) { int a,b,c,i,n; int num; clock_t start,end; srand(time(NULL)); printf("暗算トレーニング開始!!\n"); start=clock(); for(i=0;i<10;i++) { a=10+rand()%90; b=10+rand()%90; c=10+rand()%90; n=rand()%17; printf("%d%*s+%*s%d%*s+%*s%d:",a,n,"",n,"",b,n,"",n,"",c); do{ scanf("%d",&num); if(num==a+b+c) { break; } printf("\a違います。再入力してください。\n"); }while(1); } end=clock(); printf("%.1f秒かかりました。\n",(double)(end-start)/CLOCKS_PER_SEC); return 0; }

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

#1のかたの言っている通りにコーディングした結果です。 以下のようになります。動作確認していませんので、参考意見です。 ------------------------------------------------------ #include<stdio.h> #include<time.h> #include<stdlib.h> int main(void) { int a,b,c,i,n; int num; clock_t start[10],end[10]; //ここを10個確保する srand(time(NULL)); printf("暗算トレーニング開始!!\n"); //start=clock(); //これを削除 for(i=0;i<10;i++) { a=10+rand()%90; b=10+rand()%90; c=10+rand()%90; n=rand()%17; start[i]=clock(); //ここへ追加 printf("%d%*s+%*s%d%*s+%*s%d:",a,n,"",n,"",b,n,"",n,"",c); do{ scanf("%d",&num); if(num==a+b+c) { break; } printf("\a違います。再入力してください。\n"); }while(1); end[i] = clock(); //ここへ追加 } //end=clock(); //これを削除 //以下のように修正 for (i=0;i<10;i++) { printf("%d回目は%.1f秒かかりました。\n",i+1,(double)(end[i]-start[i])/CLOCKS_PER_SEC); } return 0; }

rinnshan
質問者

お礼

返信遅くなりまして大変申し訳ございませんでした。 わざわざプログラムを組んでいただいて感謝です。 clock_t型にも普通に配列を使うことができるとは 知りませんでしたので前の方がおっしゃっている領域を どのように確保すればいいのかわかりませんでした。 コメントもわかりやすかったです!!

その他の回答 (1)

回答No.1

今現在の経過時間をどうやって求めているのか理解できていますか? 今は「10回の開始」から「終了」までなので、 それを「一回」に変更して、求められた値は別に用意した領域に保存し、 最後にその保存した内容を表示する。

rinnshan
質問者

お礼

いち早く回答をくださりありがとうございました。 せっかく道を示してくださっているのにわからなかった 自分に腹立たしい限りです。 もっと努力して自己解決できるようにしてきたいと 思っております。

関連するQ&A

専門家に質問してみよう