C言語でエラーなく作ることが出来たのですが皆さんの意見が聞きたいです。
勉強中なので出来る人からしたらの素直な意見が知りたいです。
(ポインタを使う予定でしたが自分にはまだまだ理解できてないので使いませんでした)
特に void nums(int num[]) の感想が知りたです
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> #define len 3 void randint(int ran[]); //乱数による重複しない数値を設定 void nums(int num[]); // 標準入力を格納 int Hit(int ran[],int num[]); //同じ位置にranとnumの数値チェック int Blow(int ran[],int num[]); //異なる位置にranとnumの数値チェック int main(int argc, const char * argv[]) { // insert code here... int N[len],val[len]; int cnt; printf("10回以内に%dつの数値を All Hit して下さい。\n\n",len); randint(N); for(cnt = 0; cnt < 10; cnt++){ printf("%d回目ー> ",cnt+1); nums(val); int Hit_cnt = Hit(N,val); int Blow_cnt = Blow(N,val); if(Hit_cnt == len){ printf("All Hit !!\n"); break; } printf("Hit ->%2d Blow ->%2d\n\n",Hit_cnt,Blow_cnt); } if(cnt == 10){ printf("正解は["); for(int i = 0; i < len; i++){ printf("%2d",N[i]); } printf(" ]です。\n"); } return 0; } void randint(int ran[]){ int x,y; srand((unsigned)time(NULL)); for(x = 0; x < len; x++){ do{ ran[x] = rand() % 10; for(y = 0; y < len; y++){ if(ran[x]==ran[y]){ break; } } } while(x != y); } } void nums(int num[]){ char val[100]; int num_cnt; for(int loop=0;;loop++){ scanf("%s",&val,100); int val_cpy = (int)val; num_cnt = 0; if(strlen(val) == len){ for(int i = len-1; i >= 0; i--){ //num配列に代入 num[i] = val_cpy % 10; val_cpy /= 10; } break; } else{ printf("やり直しです。 %d文字入力して下さい。 -> ",len); } } } int Hit(int ran[],int num[]){ int i,Hit_cnt = 0; for(i = 0; i < len; i++){ if(ran[i] == num[i]){ Hit_cnt++; } } return Hit_cnt; } int Blow(int ran[],int num[]){ int Blow_cnt = 0; for(int x = 0; x < len; x++){ for(int y = 0; y < len; y++){ if(x != y && ran[x] == num[y]){ Blow_cnt++; } } } return Blow_cnt; }
回答4件
あなたの回答
tips
プレビュー