関数の乱数の問題について教えて下さい。
一度できたのですが、関数が正しくないとのことで返却されてしましました。
どうかお願い致します。
【問題】
乱数を使って1桁の掛け算の問題を出し、答えを入力させ、正解が得られるまで同じ問題を出し続ける
プログラムを作成せよ。
ここでは、入力された答えが正しいか否かを判定する関数を用いること。
関数の仕様は規定しないので、実行例を参照し、各自で適切に作成すること。
※乱数はrand()関数を使用して発生させよ。
※int judge(int a, int b, int c);
という関数を作成し、aとbは乱数で発生させた値、cは入力値とし、
judgeの中で正解か否かを判定し、正解ならば1を不正解ならば0を
返却する、
というようにしてください。
--------------------------------------------------
int judge(int a, int b, int c);
返却値:1:正解
0:不正解
引数 :a:乱数で生成した値1
b:乱数で生成した値2
c:入力された値
処理 :入力された値が引数2と引数2の掛け算結果と
等しいか判定する
【実行例】
7 * 9 = 62 ←7と9は乱数で発生。「7 * 9 = 」までを表示。62を入力
Please retry. ←答えが正しくないので再入力を促す
7 * 9 = 64 ←再び「7 * 9 = 」までを表示。64を入力
Please retry. ←答えが正しくないので再入力を促す
7 * 9 = 63 ←再び「7 * 7 = 」までを表示。63を入力
Right!! ←答えが正しいのでその旨を表示して終了
関数の問題について
Re:関数の問題について
>では、そのコードを見せてください。
以下のコードです。
#include <stdio.h>
#include <time.h>
main(){
time_t seed;
int a,b,ans;
time(&seed);
srand(seed);
a=(int)rand()%10;
b=(int)rand()%10;
while(1){
printf("%d * %d = ",a,b);
scanf("%d",&ans);
if(ans==a*b){
printf("Right!!\n");
break;
}else{
printf("Please retry.\n");
}
}
return 0;
}
以下のコードです。
#include <stdio.h>
#include <time.h>
main(){
time_t seed;
int a,b,ans;
time(&seed);
srand(seed);
a=(int)rand()%10;
b=(int)rand()%10;
while(1){
printf("%d * %d = ",a,b);
scanf("%d",&ans);
if(ans==a*b){
printf("Right!!\n");
break;
}else{
printf("Please retry.\n");
}
}
return 0;
}
Re:関数の問題について
問題文には
>※int judge(int a, int b, int c);
>という関数を作成し、
と書いてあります。
judge関数のコードはないのですか?
>※int judge(int a, int b, int c);
>という関数を作成し、
と書いてあります。
judge関数のコードはないのですか?
Re:関数の問題について
問題文にある「judge関数を使用する・・・」の文章は後から追加されたものです。
なので、使い方が分からなかったのでこのコードにはありません。
すみません、、言葉が足りなくて。
なので、使い方が分からなかったのでこのコードにはありません。
すみません、、言葉が足りなくて。
Re:関数の問題について
>使い方が分からなかった
main関数から他の自作関数を呼び出すコードを書いたことはありますか?
先生に教えてもらったり、教科書に載っていたりしていませんか?
main関数から他の自作関数を呼び出すコードを書いたことはありますか?
先生に教えてもらったり、教科書に載っていたりしていませんか?
Re:関数の問題について
>main関数から他の自作関数を呼び出すコードを書いたことはありますか?
>先生に教えてもらったり、教科書に載っていたりしていませんか?
今までそういったコードを書いたことはありません。今回が初めてです。
Cは教えてもらったことがありません、独学しています。
参考書はあるのですが、持っている本には呼び出す方法が書いてありませんでした。
>先生に教えてもらったり、教科書に載っていたりしていませんか?
今までそういったコードを書いたことはありません。今回が初めてです。
Cは教えてもらったことがありません、独学しています。
参考書はあるのですが、持っている本には呼び出す方法が書いてありませんでした。
Re:関数の問題について
>参考書はあるのですが
その本に、「関数」についての章はありませんか?
その本に、サンプルコードは載っていますか?載っているとして、
main関数だけでできていますか?
その本に、「関数」についての章はありませんか?
その本に、サンプルコードは載っていますか?載っているとして、
main関数だけでできていますか?
Re:関数の問題について
本にはサンプルはたいしてありません。
載っているのも簡単なもので関数の部分だけです。
でも考えてみてなんとか解決しました。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int judge(int a,int b,int c)
{
if(a*b==c)
{
printf("Right!!\n");
return 1;
}
else
{
printf("Please retry.\n");
return 0;
}
}
int main()
{
int a=0;
int b=0;
int c=0;
srand(time(NULL));
a=rand()%10;
b=rand()%10;
do
{
printf("%d * %d = ",a,b);
scanf("%d",&c);
}while(judge(a,b,c)==0);
return 0;
}
コンパイルして合っていたので、たぶん問題の意図はこういうことだと思うので解決しました。
お騒がせいたしました。ありがとうございます☆
載っているのも簡単なもので関数の部分だけです。
でも考えてみてなんとか解決しました。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int judge(int a,int b,int c)
{
if(a*b==c)
{
printf("Right!!\n");
return 1;
}
else
{
printf("Please retry.\n");
return 0;
}
}
int main()
{
int a=0;
int b=0;
int c=0;
srand(time(NULL));
a=rand()%10;
b=rand()%10;
do
{
printf("%d * %d = ",a,b);
scanf("%d",&c);
}while(judge(a,b,c)==0);
return 0;
}
コンパイルして合っていたので、たぶん問題の意図はこういうことだと思うので解決しました。
お騒がせいたしました。ありがとうございます☆
Re:関数の問題について
mikaさん、こんにちは。
お返事が遅くなってしまい、、すみません。
一応、解決されたようですが、関数の使い方はばっちり覚えておいた方がいいです。
もしもまだなんとなくって感じでしたらここより少し上の投稿
「二次方程式の解と一次元配列」のトピにある内容を読んでみてください。
私が後半、関数の使い方を説明しておりますので。
質問者さんの間違いと、それを訂正したプログラムを見比べたり、自分でもプログラムを書いてみたり、関数の使い方を読んでみたりしてみてはいかがでしょうか。
ほかの方への回答を使いまわすようで申し訳ないですがm(_ _)m
お返事が遅くなってしまい、、すみません。
一応、解決されたようですが、関数の使い方はばっちり覚えておいた方がいいです。
もしもまだなんとなくって感じでしたらここより少し上の投稿
「二次方程式の解と一次元配列」のトピにある内容を読んでみてください。
私が後半、関数の使い方を説明しておりますので。
質問者さんの間違いと、それを訂正したプログラムを見比べたり、自分でもプログラムを書いてみたり、関数の使い方を読んでみたりしてみてはいかがでしょうか。
ほかの方への回答を使いまわすようで申し訳ないですがm(_ _)m