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

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

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

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

受付中

マスターマインドで先頭の一文字目をヒントとして教えるプログラムを教えてほしいです。

s161016
diego1239

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

-1評価

0クリップ

168閲覧

投稿2022/05/28 10:33

マスターマインドで先頭の一文字目をヒントとして教えるプログラムを入れたいのですが、どこにどのように入れればよいのかわかりません。教えていただければ幸いです。
#include <time.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void make4digits(int x[])
{
int i, j, val;

for (i = 0; i < 4; i++) { do { val = rand() % 10; for (j = 0; j < i; j++) if (val == x[j]) break; } while (j < i); x[i] = val; }

}

int check(const char s[])
{
int i, j;

if (strlen(s) != 4) return 1; for (i = 0; i < 4; i++) { if (!isdigit(s[i])) return 2; for (j = 0; j < i; j++) if (s[i] == s[j]) return 3; } return 0;

}

void judge(const char s[], const int no[], int *hit, int *blow)
{
int i, j;

*hit = *blow = 0; for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { if (s[i] == '0' + no[j]) if (i == j) (*hit)++; else (*blow)++; } }

}

void print_result(int snum, int spos)
{
if (spos == 4)
printf("正解です!!");
else if (snum == 0)
printf("それらの数字はまったく含まれません。\n");
else {
printf("それらの数字中%d個の数字が含まれます。\n", snum);

if (spos == 0) printf("ただし位置もあっている数字はありません。\n"); else printf("その中の%d個は位置もあっています。\n", spos); } putchar('\n');

}

int main(void)
{
int try_no = 0;
int chk;
int hit;
int blow;
int no[4];
char buff[10];
clock_t start, end;

srand(time(NULL)); puts("■ マスターマインドをしましょう。"); puts("■ 四つの数字の並びを当ててください。"); puts("■ 同じ数字が複数含まれることはありません。"); puts("■ 4307のように連続して入力してください。"); puts("■ スペース文字などを入力してはいけません。\n"); make4digits(no); start = clock(); do { do { printf("入力してください:"); scanf("%s", buff); chk = check(buff); switch (chk) { case 1: puts("\aきちんと4文字で入力してください。"); break; case 2: puts("\a数字以外の文字を入力しないでください。"); break; case 3: puts("\a同一の数字を複数入力しないでください。"); break; } } while (chk != 0); try_no++; judge(buff, no, &hit, &blow); print_result(hit + blow, hit); } while (hit < 4); end = clock(); printf("%d回かかりました。\n所要時間は%.1f秒でした。\n", try_no, (double)(end - start) / CLOCKS_PER_SEC); return 0;

}

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

y_waiwai

2022/05/28 11:10

このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。