- ベストアンサー
正誤プログラムの作成と問題点
- 大学で心理実験用のプログラムを作成している際に、正誤プログラムに関して困っています。
- 回答者からの回答を受け取り、桁数をカウントする際に問題が発生しており、回答の正誤判定についてもアドバイスを求めています。
- 正誤プログラムの問題点についてアドバイスをお願いできないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文面を見ると、2つほど分からないことがあります。 (1) 「正答」と判断する条件は、発生した4桁の乱数と、被験者が入力した数値が厳密に一致していなければならないのでしょうか? それとも被験者が入力した数値中に、発生した4桁の乱数が見つかれば、正答と見なすのでしょうか? (2) 発生した4桁の乱数と被験者が入力した数値を比較するだけならば、桁数をカウントする必要は無いように思われますが、回答が16桁以上ならば、被験者に再入力を求める処理にするのでしょうか? とりあえず処理例を示すため、以下の条件を前提とします。この方が処理が簡単になる、からですが。違っていれば、ご指示をお願い致します。 (a) 被験者が入力した数値中に、発生した4桁の乱数の並びが見つかれば、正答と見なす。 (b) 回答が16桁以上となっても、被験者に再入力を求めない。 (処理例の一部) #include <stdio.h> #include <stdlib.h> #include <string.h> : (略) : char random_str[8], input_str[32]; /* 4桁の乱数列と被験者が入力した回答 */ int random_val; /* 4桁の乱数 */ : (略) : do { random_val = rand() % 10000; } while (random_val < 1000); sprintf(random_str, "%04d", random_val); scanf("回答 = ", input_str); if (strstr(input_str, random_str)) { /* 正答の時の処理 */ } : (略) :
その他の回答 (2)
- ddnp009
- ベストアンサー率25% (15/58)
標準入力から回答させるなら あえてdoubleで受け取ることも無いでしょう。 要するに、0~9の羅列(現段階での想定4個)と、 入力された0-9の羅列を1桁ずつ比較すればよいのだから。 つまりcharの配列で済むのではないかということ。 >まず回答者からdouble型で回答(15桁以内)を受け取り, >それの桁数をカウントします. >それから回答を一桁ごとに配列に代入していきます. これらの要求も満たし易いはず。桁数の変更も容易でしょう。
- tamanele
- ベストアンサー率50% (2/4)
受け取る数字は15桁限定ですか? 普通に桁数をカウンとするならば、 ///////////////////////////////////////// #include<stdio.h> int main(void) { unsigned long a; int i; printf("数字入力 "); scanf("%d",&a); for(i=0;a!=0;i++){ a=a/10; } printf("桁数は%d",i); return 0; } ////////////////////////////////// でカウントできます。これだと10桁までしかカウント出来ませんが…。