質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

解決済

C言語でHit&Blowを作りました。評価や代案が欲しいです!

saruganseki
saruganseki

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

4回答

-5評価

0クリップ

905閲覧

投稿2022/01/01 06:13

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; }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

jimbe

2022/01/01 07:45

>エラーなく作ることが出来た コンパイルエラーが無ければ完成…ではありません。 あらゆる場面において想定通りの動作したら完成です。 ご提示のコードは、果たしてそのように動作するのでしょうか。
saruganseki

2022/01/01 15:31

返答遅くなりました 一応、実行してみて問題なく自分が描いた通りには動いています。 ただ、プログラミングできる人から見てどう思うのか。何を考えれば良いのかが 知りたかったのです
kazuma-s

2022/01/02 06:11

> 一応、実行してみて問題なく自分が描いた通りには動いています。 その動いているコードを質問に追記してください。そうすれば 「見てどう思うのか。何を考えれば良いのか」をお伝え出来ます。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。