こんばんは!お久しぶりですっ
ドキドキした人も多いんじゃないでしょうか
今日はバレンタインとですね
皆さんは愛する人に 気持ち
を伝えられましたか?
今日は一回目のブログで紹介したプログラムを修正してきました!
仕様は全く同じですが、数値の一部をマクロ定数定義にして、四則演算のところを関数にしました。
前よりはmain関数が見やすくなったんじゃないかと思います。最初は関数使うのが面倒だと思っていましたが今ではこうする方が好きですね。
以下がソースコードになります。
_________________________________________________________________________________________________________
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 1
#define M 9
#define P 10 /*問題数*/
int getRandom(int min,int max);
int addition(int x,int y);
int subtraction(int x,int y);
int multiplation(int x,int y);
int division(int x,int y);
int main(void)
{
int c,toi,i,n,x,y,z,ans;
clock_t start, end;
while(1){
n = 0;
srand((unsigned int)time(NULL));
printf("Enterを押すとスタートします。\n");
if ((c = getchar()) == '\n'){ /*Enterが押されたとき*/
start = clock(); /*タイマがスタート*/
for(i = 0;i < P;i++){
toi = getRandom(1,4);
/*ランダムで四則演算を表示*/
switch( toi ){
case 1:
ans = addition(x,y); /*足し算*/
break;
case 2:
ans = subtraction(x,y); /*引き算*/
break;
case 3:
ans = multiplation(x,y);/*掛け算*/
break;
case 4:
ans = division(x,y); /*割り算*/
break;
}
scanf( "%d", &z); /*答えを入力*/
if(z == ans){ /*正解の時*/
n++; /*正解数が増える*/
}
}
end = clock(); /*タイマをストップ*/
printf("%d問中%d問正解!\a\n",P,n);/*正解数の表示*/
printf("%dms\n", end - start ); /*開始と終了の時間の差からタイムを表示*/
if ((c = getchar()) == '\n') continue; /*Enterを押すと最初に戻る*/
}
}
return 0;
}
int getRandom(int min,int max) /*乱数を作成する関数*/
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
int addition(int x,int y){
x = getRandom(N,M); /*1から9の間でランダムで数字を決める*/
y = getRandom(N,M);
printf(" %d+%d=", x, y); /*足し算の表示*/
return x + y;
}
int subtraction(int x,int y){
x = getRandom(N,M);
y = getRandom(x+1,2*M);
printf(" %d-%d=", y, x); /*引き算の表示*/
return y - x;
}
int multiplation(int x,int y){
x = getRandom(N,M);
y = getRandom(N,M);
printf(" %d×%d=", x, y); /*掛け算の表示*/
return x * y;
}
int division(int x,int y){
x = getRandom(N,M);
y = getRandom(N,M);
if(x > y){ /*割り算の表示*/
printf(" %d÷%d=", x * y, y);
return x * y / y;
}else{
printf(" %d÷%d=", x * y, x);
return x * y / x;
}
}
#include<stdlib.h>
#include<time.h>
#define N 1
#define M 9
#define P 10 /*問題数*/
int getRandom(int min,int max);
int addition(int x,int y);
int subtraction(int x,int y);
int multiplation(int x,int y);
int division(int x,int y);
int main(void)
{
int c,toi,i,n,x,y,z,ans;
clock_t start, end;
while(1){
n = 0;
srand((unsigned int)time(NULL));
printf("Enterを押すとスタートします。\n");
if ((c = getchar()) == '\n'){ /*Enterが押されたとき*/
start = clock(); /*タイマがスタート*/
for(i = 0;i < P;i++){
toi = getRandom(1,4);
/*ランダムで四則演算を表示*/
switch( toi ){
case 1:
ans = addition(x,y); /*足し算*/
break;
case 2:
ans = subtraction(x,y); /*引き算*/
break;
case 3:
ans = multiplation(x,y);/*掛け算*/
break;
case 4:
ans = division(x,y); /*割り算*/
break;
}
scanf( "%d", &z); /*答えを入力*/
if(z == ans){ /*正解の時*/
n++; /*正解数が増える*/
}
}
end = clock(); /*タイマをストップ*/
printf("%d問中%d問正解!\a\n",P,n);/*正解数の表示*/
printf("%dms\n", end - start ); /*開始と終了の時間の差からタイムを表示*/
if ((c = getchar()) == '\n') continue; /*Enterを押すと最初に戻る*/
}
}
return 0;
}
int getRandom(int min,int max) /*乱数を作成する関数*/
{
return min + (int)(rand()*(max-min+1.0)/(1.0+RAND_MAX));
}
int addition(int x,int y){
x = getRandom(N,M); /*1から9の間でランダムで数字を決める*/
y = getRandom(N,M);
printf(" %d+%d=", x, y); /*足し算の表示*/
return x + y;
}
int subtraction(int x,int y){
x = getRandom(N,M);
y = getRandom(x+1,2*M);
printf(" %d-%d=", y, x); /*引き算の表示*/
return y - x;
}
int multiplation(int x,int y){
x = getRandom(N,M);
y = getRandom(N,M);
printf(" %d×%d=", x, y); /*掛け算の表示*/
return x * y;
}
int division(int x,int y){
x = getRandom(N,M);
y = getRandom(N,M);
if(x > y){ /*割り算の表示*/
printf(" %d÷%d=", x * y, y);
return x * y / y;
}else{
printf(" %d÷%d=", x * y, x);
return x * y / x;
}
}
_______________________________________________________________________________________________________________
まだまだ寒い日が続きますので体調とPCの結露には気をつけてくださいねっ
またねー 