• 締切済み

スロット プルグラムについて

今、スロットをC++で作っています。 しかし、確実に実行されません。 分かるかた、教えていただけないでしょうか? プログラムがめちゃくちゃなのは承知の上です。 優しい回答お願いします。 #include <stdio.h> #include <stdlib.h> #include <time.h> void r_dsp(int rel[3][3]); int r_han(int rel[3][3],int tc); main() { int co=100, r, i, j, kc,num ,rel[3][3]; srand(time(NULL)); while( co > 2 ){ printf("何枚コインを入れますか?(1~3):"); scanf("%d",&kc); if( kc == 99 ) break; if( kc < 1 || kc > 3 ){ continue; } co -= kc; for( i = 0 ; i < 3 ; i++ ){ for( j = 0 ; j < 3 ; j++ ){ r = (double)rand() / RAND_MAX * 10; rel[i][j] = r; } } r_dsp(rel); co += r_han(rel, kc); printf("残りコイン=%d枚\n", co); } } void r_dsp(int rel[3][3]) { char num[][3]={"0","1","2","3","4","5","6","7","8","9"}; int i, j; for( i = 0 ; i < 3 ; i++ ){ for( j = 0 ; j < 3 ; j++ ){ printf("%s ", num[rel[i][j]]); } printf("\n"); } } int r_han(int rel[3][3], int tc) { int i, hk=0; for( i = 0 ; i < 3 ; i++ ){ if( i == 1 || tc != 1 ) if( rel[i][0] == 7 ) if( rel[i][1] == 7 ) if( rel[i][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } if( tc == 3 ){ if( rel[0][0] == 7 ){ if( rel[1][1] == 7 ) if( rel[2][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } if( rel[2][0] == 7 ){ if( rel[1][1] == 7 ) if( rel[0][2] == 7 ) hk += 100; else hk += 10; else hk += 2; } } printf("払出し枚数=%d\n", hk); return hk; }

みんなの回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.2

はじめに、「プログラムは、命令どおりに確実に実行する」と心得ましょう。 「命令どおりに確実に実行」しなければ、社会は大混乱です。 +++++++++++++++++++++++++++++++++++++++ プログラムは、  ・コイン3枚で、横3ライン、右下がり斜め、右上がり斜め・・5組。  ・コイン2枚で、横3ライン・・3組。  ・コイン1枚で、中央ライン・・1組。 この各組を対象に、左、中、右の順に見ていき、  ・7が3つで100点  ・左、中が7、右が7以外で10点  ・左のみ7で2点 という【まず左が7であること、次に中が7であること】という仕様で、「確実に実行」します。 中列・右列が全部7でも、左が7でなければ0点という仕様ですよね。 +++++++++++++++++++++++++++++++++++++++ >分かるかた、教えていただけないでしょうか?  質問者様の「思い」は分かりませんが、もし、左、中、右を同等に扱いたいのなら、  (現在のソース(左中右)に、「左右中」、「中左右」、「中右左」、・・の全ての判定を追加するのでなく) ◆各組の「7の個数を数える」というアルゴリズムにしたら、と思います。  プログラムの末尾「右上がり斜め」の改修例    i7Cnt = 0;    if( 7 == rel[2][0] ) i7Cnt++;    if( 7 == rel[1][1] ) i7Cnt++;    if( 7 == rel[0][2] ) i7Cnt++;    if( 3 == i7Cnt ) hk += 100;    if( 2 == i7Cnt ) hk += 10;    if( 1 == i7Cnt ) hk += 2;

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

プログラム以前に質問がめちゃくちゃ. まず仕様, つまり「どう動いてほしいのか」をきちんと示さなければ, 質問の意味がない. 仕様と違うプログラムになってもしょうがないでしょ? そして, 「確実に実行されません」としか言わないのも質問としておかしい. ちゃんと「何がどうなってどのように実行されないのか」を書くこと.

関連するQ&A