ヒットアンドブローで悩んでいます

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
フェルト

ヒットアンドブローで悩んでいます

#1

投稿記事 by フェルト » 12年前

今ヒットアンドブローを作成しているんですが少し困っています。
困っている内容は
コンピュータがプレイヤーの4桁の数値を当てる際の計算する回数が多いのでどうしたらいいでしょうか。
再プレイする時にコンピュータの最初に表示する4桁の数値がおかしくなります。
どうしたらいいでしょうか

どなたか教えてくれませんでしょうか。お願いします。
ソースコードは以下のとおりです。


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include<string.h>
#include<ctype.h>


char number[5040][5];

void func(char[5040][5] , int* , char* , int);


数値の照合関数。ここから
void hitandblow(const char *x , const char *y);


void expect(char *x , char[5040][5],int hit , int blow);


int main(void) {

//コンピュータの4桁の数値を決める際使用
char cpu_answer[] = "0123456789";
char cpu_number[] = "0123456789";
int randam1 = 0;
int randam2 = 0;
char w;

//リトライするかしないかの際使用
int retry = 0;
char input_retry[3];

//人がコンピュータの4桁の数値を当てる際に使用
int i = 0;
int j = 0;
char player_answer[6];
int player_hit = 0, player_blow = 0;

//コンピュータが人の4桁の数値を求める際最初の1回目は乱数それ以降は数値の予想をする。
int cpu_turn = 0;
int a = 0;

//エラーを表示する際使用
int error = 0;

//数値の長さを求める際使用
int length = 0;

//先手後手を決める
char input_turn[3];
int turn = 0;

//人がコンピュータの4桁の数値を当てる際に使用
char input_hit[3];
char input_blow[3];
int cpuhit = 0;//文字列input_hitに入れられた文字を数値に変換する際使用
int cpublow = 0;//文字列input_blowに入れられた文字を数値に変換する際使用

char data[5] = { 0 };
int cntr = 0;





//重複しない全ての4桁の数値を「number」へ格納
func(number , &cntr ,data , 1);

//全パターン分繰り返す
// for(i = 0 ; i < 5040 ; i++)
// {
// printf("%s\n" , number);

// }

// if(!strcmp(number[ i ] , "1234"));
// {
// //配列の何番目かを表示
// printf("一致:number[%d] == \"1234\"\n" , i);
// }




printf("ヒットアンドブローを開始します\n");

/* 乱数系列を初期化 */
srand((unsigned int)time(NULL));




/* 全体のループ */

while (1){ // 1ゲーム分のループ

while(1){ //先手後手を決める
printf("先手か後手のどちらにしますか(先手・・・1, 後手・・・2) ");

fgets( input_turn, sizeof(input_turn)+1, stdin );
//文字列(sentegote)の中にNULLが存在しない場合、以降の領域を侵してでもNULLを探すのでNULLを配列の末尾に入れる。
input_turn[strlen(input_turn)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", input_turn, strlen(input_turn) );

error = 0;

//入力した値が1桁かチェックする
length = strlen(input_turn);
if (length != 1){
error = 1;
}


//入力された値が「0」以下または、「3」以上が入れられた場合
if (input_turn[0] <= '0' || input_turn[0] >= '3' ){
error = 1;

}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。再入力してください。\n");
/* 入力文字数がサイズオーバーしてると標準入力(stdin)にゴミが残るのでクリア */
fflush( stdin );

continue;


}
//配列に入れられた値を数値に変換する。
turn = atoi(input_turn);

if (turn == 1){
printf("あなたが先手です。\n");
break;
}
else if(turn == 2){
printf("あなたが後手です。\n");
break;
}
}

//コンピュータ側の4桁の数値を決める。
printf("コンピュータの数値を作成しています。\n");


/* コンピュータ側の4数字をシャッフルする */
for (i = 0; i < 100; i++) {
randam1 = rand() % 10;
randam2 = rand() % 10;
w = cpu_answer[randam1];
cpu_answer[randam1] = cpu_answer[randam2];
cpu_answer[randam2] = w; /* 入れ替え */
}

printf("%.4s\n" , cpu_answer); //CPU側の0~9の数字をシャッフルし4桁までの数字を表示


//ヒットが4になるまで繰り返す
while(1){

//人が先手だった時。
if (turn == 1){

printf("あなたが予想するコンピュータの4桁の数値を入力してください。\n");
fgets( player_answer, sizeof(player_answer)+1, stdin );
player_answer[strlen(player_answer)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n\n", hito4keta, strlen(hito4keta));
error = 0;

//入力した値が4桁かチェックする
length = strlen(player_answer);
if (length != 4){
error = 1;
}

//入力データが数値かチェック
for (i = 0; i < length; i++){
if (isdigit(player_answer) == 0){
error = 1;
}
}

//重複していないかチェックする
for (i = 0; i < length; i++){
for (j = i + 1; j < length; j++){
if (player_answer == player_answer[j]){
error = 1;
}
}
}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した数値が正しくありません。\n再入力してください。\n");
fflush( stdin );

continue;

}

/* ヒット数とブロー数を算出する */

hitandblow(cpu_answer, player_answer);



for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (player_answer == cpu_answer[j]) {
if (i == j) {
player_hit++;
}
else{
player_blow++;
}
}
}
}

/* 人のターン */
if (player_hit != 4){
turn = 2;/*順番入れ替え*/
printf("回答者と出題者が交代します。\n");
printf("コンピュータの番です。\n");
player_hit = 0;
player_blow = 0;
}
else{
break;
}

}
//コンピュータが先手の場合。
else if (turn == 2){

/*コンピュータは初めの一回は乱数を使って人側の4桁の数字を表示する。。*/
if (cpu_turn == 0){

printf("私が予想するあなたの4桁の数値は\n");

for (i = 0; i < 100; i++) {
randam1 = rand() % 10;
randam2 = rand() % 10;
w = cpu_number[randam1];
cpu_number[randam1] = cpu_number[randam2];
cpu_number[randam2] = w; /* 入れ替え */
}

printf("%.4s" , cpu_number);//乱数を使って0~9の数字をシャッフルし4桁までを表示させる。
printf("です。\n");

while(1){//算出された数値に対してのヒット、ブローの入力

while (1){//ヒットの入力
printf("ヒットとブローの数を入力してください。\n");
printf("ヒット:");
fgets( input_hit, sizeof(input_hit)+1, stdin );
input_hit[strlen(input_hit)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", cpuhit1, strlen(cpuhit1) );
error = 0;

//入力した値が1桁かチェックする
length = strlen(input_hit);
if (length != 1){
error = 1;
}


//入力された値が「0」より小さい値または、「5」以上の値が入れられた場合
if (input_hit[0] < '0' || input_hit[0] >= '5' ){
error = 1;

}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。再入力してください。\n\n");
fflush( stdin );
}
else{
cpuhit = atoi(input_hit);//ヒットに入った文字を数値に変換
break;
}
}

while(1){//ブローの入力
printf("ブロー:");

fgets( input_blow, sizeof(input_blow)+1, stdin );
input_blow[strlen(input_blow)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", cpublow1, strlen(cpublow1) );

error = 0;

//入力した値が1桁かチェックする
length = strlen(input_blow);
if (length != 1){
error = 1;
}

//入力された値が「0」より小さい値または、「5」以上の値が入れられた場合
if (input_blow[0] < '0' || input_blow[0] >= '5' ){
error = 1;
}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。再入力してください。\n\n");
fflush( stdin );
}

else{
cpublow = atoi(input_blow);//ブローに入った文字を数値に変換
break;
}
}

if (cpuhit + cpublow > 4){//ヒットとブローの入力された数値を計算し合計が4より大きければ再入力
printf("ヒットとブローの合計値が4以上です。再入力してください。\n");
fflush( stdin );
}
else if (cpuhit == 3 && cpublow >= 1){
printf("ヒットとブローの値がおかしいです。再入力してください。\n");
fflush( stdin );
}
else{
break;
}
}

if (cpuhit != 4){//ヒットが4でなければ回答者と出題者を入れ替える
printf("回答者と出題者を入れ替えます\n");
printf("あなたの番です。\n\n");
cpu_turn = 1;//回数を1にして次からは予想関数でヒットとブローを求める。
}
else{
break;
}
}
else if (cpu_turn == 1){/*コンピュータは2回目からは数値の予想関数を使って求めていく*/

//printf("コンピュータの数値の予想関数使用\n\n");

expect(cpu_number , number ,cpuhit , cpublow);

while (1){//算出された数値に対してのヒット、ブローの入力

while (1){//ヒットの入力
printf("ヒットとブローの数を入力してください。\n");
printf("ヒット:");
fgets( input_hit, sizeof(input_hit)+1, stdin );
input_hit[strlen(input_hit)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", cpuhit1, strlen(cpuhit1) );
error = 0;

//入力した値が1桁かチェックする
length = strlen(input_hit);
if (length != 1){
error = 1;
}


//入力された値が「0」より小さい値または、「5」以上の値が入れられた場合
if (input_hit[0] < '0' || input_hit[0] >= '5' ){
error = 1;

}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。再入力してください。\n");
fflush( stdin );
}
else{
cpuhit = atoi(input_hit);//ヒットに入った文字を数値に変換
break;
}
}

while(1){//ブローの入力
printf("ブロー:");
fgets( input_blow, sizeof(input_blow)+1, stdin );
input_blow[strlen(input_blow)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", sentegote, strlen(sentegote) );
error = 0;

//入力した値が1桁かチェックする
length = strlen(input_blow);
if (length != 1){
error = 1;
}


//入力された値が「0」より小さい値または、「5」以上の値が入れられた場合
if (input_blow[0] < '0' || input_blow[0] >= '5' ){
error = 1;

}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。再入力してください。\n");
fflush( stdin );
}
else{
cpublow = atoi(input_blow);//ブローに入った文字を数値に変換
break;
}

}

if (cpuhit + cpublow > 4){//ヒットとブローの入力された数値を計算し合計が4より大きければ再入力
printf("ヒットとブローの合計値が4以上です。\n");
}
else{
break;
}
}

if (cpuhit != 4){//ヒットが4でなければ回答者と出題者を入れ替える
printf("回答者と出題者を入れ替えます\n");
printf("あなたの番です。\n");
}
else{
break;
}
}
turn = 1;/*順番入れ替え*/
cpu_turn = 1;/**機械の場合2回目からは数値の予想関数を使用する。*/
}

} /*人かコンピュータかどちらかのヒットが4になるまで繰り返す */

if (turn == 1){/*turn = 1 ・・人がコンピュータのヒットを当てたら*/
printf("あなたが勝ちました。おめでとうございます。\n");

}
else if (turn == 2){/*turn = 2 ・・コンピュータが人のヒットを当てたのなら。*/
printf("コンピュータが勝ちました。次は頑張ってください\n");
}

while(1){

/* 再プレイするかどうか聞く */
printf("再プレイしますか(yes・・1 , no・・2) ");
fgets( input_retry, sizeof(input_retry)+1, stdin );
input_retry[strlen(input_retry)-1] = '\0';
//printf( "入力文字列:[%s] 入力文字数:[%d]\n", ritorai, strlen(ritorai) );
error = 0;

//入力した値が1桁かチェックする
length = strlen(input_retry);
if (length != 1){
error = 1;
}

//入力データが数値かチェック
if (isdigit(input_retry[0]) == 0){
error = 1;
}

//入力された値が「0」以下または、「3」以上が入れられた場合
if (input_retry[0] <= '0' || input_retry[0] >= '3' ){
error = 1;

}

//error == 1ならエラー表示する
if (error == 1){
printf("入力した値が正しくありません。1か2を入力してください。\n");
fflush( stdin );
}
else{
retry = atoi(input_retry);//ritoに入った文字を数値に変換する。
break;
}

}

if (retry == 1){
printf("ヒットアンドブローを再プレイします。\n\n");
fflush( stdin );
cpu_turn = 0;
player_hit = 0;

// for(i = 0 ; i < 1 ; i++){
// for(j = 0 ; j < 4 ; j++){
// cpu_number = j;
// }
// }



}
else {
break;
}

} // リトライするなら繰り返ししなければ終了する。

/* 終了 */
printf("ヒットアンドブローを終了します。\n");

return 0;
}

//数値の照合関数。ここから
void hitandblow(const char *x , const char *y)
{
int i = 0;
int j = 0;
int hit=0;
int blow=0;

for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x == y[j]) {
if (i == j) {
hit++;
}
else {
blow++;
}
}
}
}
printf("あなたが入力した4桁の数値は\n");
printf("ヒット数:%d ブロー数:%d" ,hit , blow );
printf("です。\n");
}
//数値の照合関数。ここまで


// 重複しない全ての4桁の数値を「number」へ格納する関数
void func(char pnumber[5040][5] , int* pcntr , char* pdata , int pos)
{
char i , *p;
int j;

p = &pdata[pos - 1];
for(i = 0 ; i < 10 ; i++){

for(j = 0 ; j <= 4 ; j++){

if('0' + i == pdata[ j ]){
break;
}
}
if(j < 4){
continue;
}
*p = '0' + i;

if(4 == pos ){
strcpy( pnumber[ ( *pcntr )++ ], pdata );
}
else{
func(pnumber , pcntr , pdata , pos + 1);
}
}
*p = '\0';
}




//コンピュータの数値の予想関数。ここから。
void expect( char *x, char pnumber[5040][5] ,int hit , int blow)
{

int i = 0;
int j = 0;
int k = 0;

int l = 0;
int m = 0;
int n = 0;
int o = 0;

char *cpu_answer[5040];
static int turn = 0;

int player_hit = 0;
int player_blow = 0;


//printf("%s\n" , x);
//printf("%s\n" , pnumber);


if(hit + blow == 0){

for(k = 0 ; k < 5040 ; k++){//重複しない全ての4桁の数値と比較する(5040通り)
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x == pnumber[k][j]) {
if (i == j) {
player_hit++;
}
else {
player_blow++;
}
}
}
}


if(player_hit == 4){

}

else if(player_hit + player_blow == 0){
cpu_answer[m] = pnumber[k];
m++;
}

//printf("%.4s %s\n" , x , pnumber[k]);
//printf("ヒット数:%d , ブロー数%d\n" , player_hit , player_blow);

player_hit = 0;
player_blow = 0;
}

printf("あなたの数値は%sですか?\n" ,cpu_answer[0] );
}

if(hit + blow == 1){

for(k = 0 ; k < 5040 ; k++){
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x == pnumber[k][j]) {
if (i == j) {
player_hit++;
}
else {
player_blow++;
}
}
}
}

if(player_hit == 4){

}
else if(player_hit + player_blow == 1){
cpu_answer[m] = pnumber[k];
m++;
}

//printf("数値は%sですか\n" , cpu_answer[0]);

//printf("%.4s %s\n" , x , pnumber[k]);
//printf("ヒット数:%d , ブロー数%d\n" , player_hit , player_blow);

player_hit = 0;
player_blow = 0;
}

printf("あなたの4桁の数値は%sですか?\n" ,cpu_answer[0] );
}

if(hit + blow == 2){
for(k = 0 ; k < 5040 ; k++){
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x == pnumber[k][j]) {
if (i == j) {
player_hit++;
}
else {
player_blow++;
}
}
}
}

if(player_hit == 4){

}
else if(player_hit + player_blow == 2){
cpu_answer[m] = pnumber[k];
m++;
}

// printf("%.4s %s\n" , x , pnumber[k]);
// printf("ヒット数:%d , ブロー数%d\n" , player_hit , player_blow);

player_hit = 0;
player_blow = 0;
}

printf("あなたの4桁の数値は%sですか?\n" ,cpu_answer[0] );
}

if(hit + blow == 3){

for(k = 0 ; k < 5040 ; k++){
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x == pnumber[k][j]) {
if (i == j) {
player_hit++;
}
else {
player_blow++;
}
}
}
}

if(player_hit == 4){

}
else if(player_hit + player_blow == 3){
cpu_answer[m] = pnumber[k];
m++;
}

// printf("%.4s %s\n" , x , pnumber[k]);
// printf("ヒット数:%d , ブロー数%d\n" , player_hit , player_blow);

player_hit = 0;
player_blow = 0;
}

printf("あなたの4桁の数値は%sですか?\n" ,cpu_answer[0] );

}

if(hit + blow == 4){

for(k = 0 ; k < 5040 ; k++){
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (x[i] == pnumber[k][j]) {
if (i == j) {
player_hit++;
}
else {
player_blow++;
}
}
}
}

if(player_hit == 4 ){//前回の4桁と今回比較する数値が同じ場合、cpu_answreに4桁の数値を格納しない

}
else if(player_hit + player_blow == 4 ){
cpu_answer[m] = pnumber[k];
m++;
}


player_hit = 0;
player_blow = 0;
}

printf("あなたの4桁の数値は%sですか?\n" ,cpu_answer[0] );

}

//可能性のある4桁の数値を格納
for(i = 0 ; i < m ; i++){
for(j = 0 ; j < 4 ; j++){
pnumber[i][j] = cpu_answer[i][j];
}
}

strcpy(x, *pnumber);
//最小値の数値として表示した4桁の数値を次回比較する対象の数値に変更する。
printf("%s\n" , x);

//printf("%s\n" , x[0]);
//printf("%s\n" , pnumber[1]);

}
//コンピュータの数値の予想関数。ここまで。

box
記事: 2002
登録日時: 15年前

Re: ヒットアンドブローで悩んでいます

#2

投稿記事 by box » 12年前

そもそも、設計の段階で、
hitandblow関数が
ヒット数とブロー数を返すようになっていないように見えるところで
何かおかしいような気がしないでもありません。

5040
6
5
3
などのマジックナンバーの意味は何でしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: ヒットアンドブローで悩んでいます

#3

投稿記事 by みけCAT » 12年前

とりあえず、コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: ヒットアンドブローで悩んでいます

#4

投稿記事 by みけCAT » 12年前

本題には関係なさそうですが、ざっと読んで気になったことを書いておきます。

○funcという関数の名前から機能が推測できません。適切な名前を付けるべきだと思います。
○以下のコードは危険です。
フェルト さんが書きました:fgets( input_turn, sizeof(input_turn)+1, stdin );
//文字列(sentegote)の中にNULLが存在しない場合、以降の領域を侵してでもNULLを探すのでNULLを配列の末尾に入れる。
input_turn[strlen(input_turn)-1] = '\0';
・せっかくsizeofで確保した領域のサイズを取得しているのに、1を足してしまったら領域外アクセスの危険が発生します。
・input_turn(ここではsentegoteは関係ないですね)の中にNUL文字(NULLではありません)が存在しない場合、
 strlen関数が「以降の領域を侵してでもNUL文字を探す」ので、下のコードは意味がありません。
 また、fgets関数がNUL文字を格納するので、
 この場所で「input_turnの中(もしくは+1の部分)にNUL文字が存在しない場合」が生じる可能性は限りなく0に近いと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: ヒットアンドブローで悩んでいます

#5

投稿記事 by みけCAT » 12年前

試しに一度実行してみたところ、以下のような結果になりました。

コード:

ヒットアンドブローを開始します
先手か後手のどちらにしますか(先手・・・1, 後手・・・2) 1
あなたが先手です。
コンピュータの数値を作成しています。
0234
あなたが予想するコンピュータの4桁の数値を入力してください。
4320
あなたが入力した4桁の数値は
ヒット数:0 ブロー数:4です。
回答者と出題者が交代します。
コンピュータの番です。
私が予想するあなたの4桁の数値は
5184です。
ヒットとブローの数を入力してください。
ヒット:0
ブロー:1
回答者と出題者を入れ替えます
あなたの番です。

あなたが予想するコンピュータの4桁の数値を入力してください。
0234
あなたが入力した4桁の数値は
ヒット数:4 ブロー数:0です。
あなたが勝ちました。おめでとうございます。
再プレイしますか(yes・・1 , no・・2) 1
ヒットアンドブローを再プレイします。

先手か後手のどちらにしますか(先手・・・1, 後手・・・2) 1
あなたが先手です。
コンピュータの数値を作成しています。
1579
あなたが予想するコンピュータの4桁の数値を入力してください。
1234
あなたが入力した4桁の数値は
ヒット数:1 ブロー数:0です。
回答者と出題者が交代します。
コンピュータの番です。
私が予想するあなたの4桁の数値は
6128です。
ヒットとブローの数を入力してください。
ヒット:0
ブロー:1
回答者と出題者を入れ替えます
あなたの番です。

あなたが予想するコンピュータの4桁の数値を入力してください。
1579
あなたが入力した4桁の数値は
ヒット数:4 ブロー数:0です。
あなたが勝ちました。おめでとうございます。
再プレイしますか(yes・・1 , no・・2) 1
ヒットアンドブローを再プレイします。

先手か後手のどちらにしますか(先手・・・1, 後手・・・2) 2
あなたが後手です。
コンピュータの数値を作成しています。
5108
私が予想するあなたの4桁の数値は
1564です。
ヒットとブローの数を入力してください。
ヒット:1
ブロー:0
回答者と出題者を入れ替えます
あなたの番です。

あなたが予想するコンピュータの4桁の数値を入力してください。
5107
あなたが入力した4桁の数値は
ヒット数:3 ブロー数:0です。
回答者と出題者が交代します。
コンピュータの番です。
あなたの4桁の数値は0123ですか?
0123
ヒットとブローの数を入力してください。
ヒット:0
ブロー:2
回答者と出題者を入れ替えます
あなたの番です。
あなたが予想するコンピュータの4桁の数値を入力してください。
5108
あなたが入力した4桁の数値は
ヒット数:4 ブロー数:0です。
あなたが勝ちました。おめでとうございます。
再プレイしますか(yes・・1 , no・・2) 2
ヒットアンドブローを終了します。
「再プレイする時にコンピュータの最初に表示する4桁の数値がおかしくなります。」とはどういうことですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 15年前

Re: ヒットアンドブローで悩んでいます

#6

投稿記事 by box » 12年前

>質問者さん

コード:

コンピュータの数値を作成しています。
0234
ここで、コンピュータの数値を出力しているのはデバッグ用か何かですか?
もし、デバッグ用ではないのであれば、出力しているのはおかしくありませんか?
コンピュータの数値は、プレイヤーには秘密のはずです。

コード:

コンピュータの番です。
私が予想するあなたの4桁の数値は
5184です。
ヒットとブローの数を入力してください。
ヒット:0
ブロー:1
プレイヤーの数値が見えていない(と思われる)状態で、
ヒット数とブロー数がどうやったらわかるのでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る