回答済み パチンコのような動作のプログラム

  • 2011年10月24日 7:14
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;


    int main()
    {
     
     
     
     int add;
     int a;
     int x;
     
     cout <<"テストプログラム 2011 10・24"<<endl; 
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 100; add++) {
     

     cout << 1+ (int) (rand() * 315/(1.0 + RAND_MAX))<<" ";

      if (add == 315) {cout <<"大当たり !ラッキースタート"<<endl;}
    else if (add == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (add == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (add == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (add != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>a;
    }

     

    このプログラムを実行すると 数値がおかしいのですが

    設定数値と実行数値が一致しません。

    乱数生成値を 別の変数に渡すには どうすればいいのでしょうか?

     


すべての返信

  • 2011年10月24日 7:40
     
     

    このプログラムを実行すると 数値がおかしいのですが

    設定数値と実行数値が一致しません。


    コードの意図が分からないので、何がどうおかしいのか分かりませんが、add という変数は 0 から 99 まで値を取るただのカウンターですよね?

    乱数生成値を 別の変数に渡すには どうすればいいのでしょうか?


    変数に代入するとか、そういう意味ですか?
  • 2011年10月24日 8:17
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;


    int main()
    {
     
     
     
     int add;
     int a;
     int x;
     
     cout <<"テストプログラム 2011 10・24"<<endl;
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 1000; add++) {
     

     cout << 1+ (int) (rand() * 315/(1.0 + RAND_MAX))<<" ";

      if (rand() == 315) {cout <<"大当たり !ラッキースタート"<<endl;}
    else if (rand() == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (rand() == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (rand() == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (rand() != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>a;
    }

    >変数に代入するとか、そういう意味ですか?

    そうです 一旦 生成した乱数を何かの変数もしくは構造体にストックしてから

    条件分岐したほうが 正確だと思うのですが?

    上記のプログラムを実行すると リーチの数字が 208でした リーチは、215で出力されるはずですが

    +7加算されてます。 以後 何度実行しても リーチも当たりも出ませんでした。

     

  • 2011年10月24日 8:23
     
     

    >変数に代入するとか、そういう意味ですか?

    そうです 一旦 生成した乱数を何かの変数もしくは構造体にストックしてから


    「一旦 生成した乱数を何かの変数もしくは構造体にストック」というのをそのままコードで表現してはいかがでしょうか。

    条件分岐したほうが 正確だと思うのですが?

    上記のプログラムを実行すると リーチの数字が 208でした リーチは、215で出力されるはずですが

    +7加算されてます。 以後 何度実行しても リーチも当たりも出ませんでした。


    rand() を呼び出す毎に戻り値が変化するのですよ。
  • 2011年10月24日 9:01
     
     
    「一旦 生成した乱数を何かの変数もしくは構造体にストック」というのをそのままコードで表現してはいかがでしょうか。

    今からニュースを見ないといけないので また 後で じっくり考察して見たいと思います 。

     

    >rand() を呼び出す毎に戻り値が変化するのですよ。
    なるほど だから 数値が変なのですね 。

    その辺も含めて 考えてみたいと思います。

     

    この掲示板の引用なのですが 2度使用できないのですが どうやって

    複数回 引用 を使用するのですか?




  • 2011年10月24日 12:18
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 100;
    int main()
    {
     

     int a;
     int x;
     int i;

     int box[HI];
     
     cout <<"テストプログラム 2011 10・24"<<endl;
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 100; add++) {
     
     i=1+ (int) (rand() * 315/(1.0 + RAND_MAX));
     cout <<  i<<" ";

     

      if (box[i] == 315) {cout <<"大当たり !ラッキースタート"<<endl;}
    else if (box[i] == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[i] == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[i] == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[i] != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;
    }

     

    これで 動くのですが やはり ハズレしか 出ません。

    どこが 違ってるのでしょうか?

     

  • 2011年10月24日 13:30
    モデレータ
     
     

    これで 動くのですが やはり ハズレしか 出ません。
    どこが 違ってるのでしょうか? 

    何に代入しているか、何を参照しているか、もう一度読み直してみませんか?
    というか、デバッグすれば == で参照している相手の値をクイックヒントとか、ウォッチとか、ローカルとかその手のツールで見えると思いますよ。

     

     

    ・box には何をあなたは入れていますか?
    ・box が何になることを期待していますか?
    ・乱数は何に入れていますか?
    ・315 と比較したいのは何だったんですか?

    # このレベルだと、正直厳しい。。。
    # もう少し、デバッグする、動作を推測することが必要かも。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
  • 2011年10月24日 13:40
    モデレータ
     
     

    忘れてた。

    この掲示板の引用なのですが 2度使用できないのですが どうやって
    複数回 引用 を使用するのですか?

     http://social.msdn.microsoft.com/Forums/ja-JP/suggestja/thread/93f499d8-686c-4041-94c1-f776f825df9a

    HTML タグを編集しないとどうしてもうまくいかないことがあります。
    なので、むやみにがんばるよりも、> とか使って引用を表した方が楽かもしれませんね。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
  • 2011年10月24日 14:31
     
     
    「一旦 生成した乱数を何かの変数(もしくは構造体)にストック」

    これをそのままコードで表現できませんか?
  • 2011年10月24日 14:39
     
     
    「一旦 生成した乱数を何かの変数(もしくは構造体)にストック」

    これをそのままコードで表現できませんか?


    あるいは、どう考えたので投稿したようなコードを書いたのか。

    見ている人はあなたではないので、どのように言うとどう考えるのか、わかりません。「生成した乱数を変数にストック」から、なぜ、「i = rand()」としながら「if (box[i] ==)」というコードが生まれたのか、見当がつきません。ここで、どのように考えたからこのコードが生まれたのかを説明していただければ、あなた向けの説明ができるかもしれません。


    Jitta@わんくま同盟
  • 2011年10月24日 23:28
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 100;
    int main()
    {
     

     int a;
     int x;
     int i;

     int box[HI];
     
     cout <<"テストプログラム 2011 10・24"<<endl;
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 1000; add++) {
     
     i=1+ (int) (rand() * 315/(1.0 + RAND_MAX));
     cout <<  i<<" ";

     

      if (i == 315) {cout <<"大当たり !ラッキースタート"<<endl;}
    else if (i == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;
    }

    これで 一応 動きますが ラッキースタートもリーチも出力します。

    確率的には315分の1 ぽいです。 

     

     

    >乱数を変数にストック」から、なぜ、「i = rand()」としながら「if (box[i] ==)」というコードが生まれたのか、見当がつきません。

    変数 Iは、4バイトの 領域なので 生成した乱数の数列が、入りきらない しかし実際は、入りきっている。

    BOX[HI]は、0から99の4バイトの領域を100個 確保しています。 100回転に対応した変数としたのです。

    実際にこのプログラムは、1000回転に対応しています。 配列を行い 順次 読み出して 判定したほうが

    良いと思いましたが これで 良いなら 良いです。

    >というか、デバッグすれば == で参照している相手の値をクイックヒントとか、ウォッチとか、ローカルとかその手のツールで見えると思いますよ。

    そのデバック機能の作動方法を教えてください。 何をクリックして 何を 呼び出せば良いのですか?

    実際に==の参照先を見てみたいです。


    DOS窓のスクロールバーが 中途半端に終端してしまいます すべて 見る為にスクロールバーをすべての出力において保持できないのでしょうか?
  • 2011年10月25日 1:06
     
     

    >乱数を変数にストック」から、なぜ、「i = rand()」としながら「if (box[i] ==)」というコードが生まれたのか、見当がつきません。

    変数 Iは、4バイトの 領域なので 生成した乱数の数列が、入りきらない しかし実際は、入りきっている。


    rand() で生成した乱数を 100 個しかない配列の添え字にするのはおかしいという指摘なのですが、その意図は伝わっているのでしょうか?
    配列の境界を越えてアクセスしようとするケースが出てきてしまうのですが。

    あと、どの部分が引っ掛かっているのかが分かりませんが、rand() 関数の戻り値は int 型です。

    rand
    http://msdn.microsoft.com/ja-jp/library/398ax69y.aspx

    ついでに言うと、通常の局面で変数のバイト数をするのは良くないと思います。シリアライズなどのようにどうしてもバイト数を意識しないといけない場面以外は、型で認識するのがよろしいかと。

    >というか、デバッグすれば == で参照している相手の値をクイックヒントとか、ウォッチとか、ローカルとかその手のツールで見えると思いますよ。

    そのデバック機能の作動方法を教えてください。 何をクリックして 何を 呼び出せば良いのですか?

    実際に==の参照先を見てみたいです。


    メニュー バーに [デバッグ] メニューはありませんか?


    DOS窓のスクロールバーが 中途半端に終端してしまいます すべて 見る為にスクロールバーをすべての出力において保持できないのでしょうか?

    コマンド プロンプトのプロパティで画面バッファーのサイズを調整すればいいかもしれません。
  • 2011年10月25日 4:13
     
     
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 100;
    int main()
    {
     

     int a;
     int x;
     int i;

     int box[HI];
     
     cout <<"テストプログラム 2011 10・24"<<endl;
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 100; add++) {
     
     i=1+ (int) (rand() * 315/(1.0 + RAND_MAX));
     cout <<  i<<" ";

     

     if (i == 315) {cout <<"大当たり !ラッキースタート"<<endl;
      for (int set = 0; set<6; set++){
       x=1+ (int) (rand() * 18/(1.0 + RAND_MAX));
      }
      switch (x == 18){
      case 1: cout <<"確立変動成立 おめでとうございます!" <<endl;
       cout << x << " ";
       break;
      }
     
     }
     
    if (i == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;

    }

     

    このプログラムは、不完全です。

    case 2: (x !=18) {cout <<"ハズレデス"<<endl;}
       break; 

    この行を追加すると コンパイルエラーになります。{ の部分で エラー表示されます。

  • 2011年10月25日 4:29
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 100;
    int main()
    {
     

     int a;
     int x;
     int i;

     int box[HI];
     
     cout <<"テストプログラム 2011 10・24"<<endl;
     
     
     

     

     


     cout<<"パチンコプログラム"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 100; add++) {
     
     i=1+ (int) (rand() * 315/(1.0 + RAND_MAX));
     cout <<  i<<" ";

     

     if (i == 315) {cout <<"大当たり !ラッキースタート"<<endl;
      for (int set = 0; set<6; set++){
       x=1+ (int) (rand() * 6/(1.0 + RAND_MAX));
      }
      switch (x < 4){
      case 1: cout <<"確立変動成立 おめでとうございます!" <<endl;
       cout << x << " ";
       break;
      case 2: (x >4); {cout <<"ハズレデス"<<endl;}
       break;
    }
     
     }
     
    if (i == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;

    }

     

    これで動作しますが 表示が変です。

    数字が 重なって 表示され 改行されない

    又 ハズレデス とカタカナ表記なのに それが 出力されてないのです。

     

  • 2011年10月25日 4:46
     
     
    コードを送りつけて、「何が違っているか」とか「表示が変」とか丸投げするのを、そろそろ止めませんか?
    デバッグ実行なりステップ実行なりをご自分で実施して、もっとピンポイントの質問をするべきだと思います。
    今の質問の仕方だと、質問者のコードを解析するために読者の時間を拘束していることになるのですよ。
  • 2011年10月25日 13:31
    モデレータ
     
     

    厳しい言い方ですが、基礎から勉強し直すことをおすすめします。
    そしてデバッグの手法を学んで、何がおかしいかを特定してください。

    今のコード添削お願いします方式だと、いずれ誰もついてこなくなりますので、質問のやり方を改善してください。
    参考になるかもしれません:http://www.hyuki.com/writing/techask.html


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
  • 2011年10月25日 17:04
     
     

     #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 100;
    int main()
    {
     

     int a=0;
     int x=0;
     int i=0;

     int box[HI];
     
     cout <<"パチンコ動作プログラム 2011 10・26"<<endl;
     
     
     

     

     


     cout<<"パチンコカクリツケンショウプログラム スタート"<<endl;

    cout<<"投資額 300回転 1000円×20回転 = 1万5千円"<<endl;

    srand((unsigned int) time(0));
    for (int add = 0; add < 300; add++) {
     
     i=1+ (int) (rand() * 315/(1.0 + RAND_MAX));
     cout <<  i<<" ";

     

     if (i == 315) {cout <<"大当たり !ラッキースタート"<<endl;
      for (int set = 0; set<6; set++){
       x=1+ (int) (rand() * 6/(1.0 + RAND_MAX));
      }
      switch (x < 4){
      case 1: cout<< x << " 確立変動成立 おめでとうございます!" <<endl;
       for (int set = 0; set<6; set++){
        x=1+ (int) (rand() * 6/(1.0 + RAND_MAX)); }
      
      
      case 2: (x >4); {cout << x <<" カクリツヘンドウハズレデス"<<endl;}
        break;
    }
     
     }
     
    if (i == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (i != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;

    }

     


    皆様ありがとうございました 無事 完成しました!。

    大当たり回数をカウントして 算出額を 2.5×2250 × 回数で 最後に表示すれば

    大まかな 勝率が出ます。 だいたい3回出れば 千円 勝つようです。

     

    コードの一番左側のクリーム色のラインにブレークポイントをクリックして

    ツールバー下段の続行 F5の 再生マークをクリックすると 自動変数欄に出力結果が 変数名 値 型で表示されます。 再び ブレークポイントをクリックすれば ブレークポイントは消えます。 実行ウィンドウが出力されその部分まで実行されます。






  • 2011年10月26日 2:46
     
     回答済み

     #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 1000;
    int main()
    {
     
     
     int a=0;
     int x=0;
     int i=0;
     int ax=0;
     int box[HI];
     
     cout <<"パチンコプログラム 2011 10・26"<<endl;
     
     
     

     

     


     cout<<"パチンコケンショウプログラム スタート"<<endl;

     cout<<"パチンコカクリツケンショウプログラム スタート"<<endl;
     cout<<"投資額 300回転 1000円×20回転 = 1万5千円"<<endl;


    srand((unsigned int) time(0));
    for (int add = 0; add < 300; add++) {
     
     box[HI]=1+ (int) (rand() * 315.0/(1.0 + RAND_MAX));
     cout <<  box[HI]<<" ";

     

     if (box[HI] == 315)  { cout <<"大当たり !ラッキースタート"<<endl;
     ax++;
      for (int set = 0; set<6; set++){x=0;
       x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX));
      }
      if (x <= 3){AT:
        cout<< x << " やったね! 確立変動権利確定! おめでとうございます!" <<endl;
       for (int set = 0; set<6; set++){x=0;
        x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX)); }ax++;
       
        if(x <= 3){goto AT;}
      
      
      if  (x >=3) {cout << x <<" 残念! カクリツヘンドウ再抽選ハズレデス"<<endl;}
       
    }
     
     }
     
    if (box[HI] == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;
    cout <<"大当たり回数は、"<<ax<<endl;
    cout <<"投資額15000円 回収金額は、"<<ax*5625<<"円です"<<endl;
    cout <<"出玉数は、"<<ax*2250<<"発です。"<<endl;

    cout << "数値入力でプログラム終了" <<endl;


    cin>>x;

    }

     

    完成しました。

    不具合を修正しました。 

     


  • 2011年10月30日 15:13
     
     回答済み

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>

    using namespace std;

    const int HI = 15000;
    int main()
    {
     
     
     int a=0;
     int x=0;
     int i=0;
     int ax=0;
     int box[HI];
     int ATbox[HI];
     int count=0;
     int mas=0;
     int go=0;
     int set=0;
     int replay;
     char g;
     
     
     
     
     cout <<"パチンコプログラム 2011 10・26"<<endl;
     
     cout <<"標準でシュミレートしますか? yes=1 no=2"<<endl;
     cin >> a;
        atc:///再プレイ戻りルーチン用
     ax=0;
     switch (a!=1){rpt:
     case 1:cout<<"ルーレット回転数を任意で設定して下さい。 例1~999まで"<<endl;
     cin >> mas;
     if (mas>10000){goto rpt;}
     
     
     srand((unsigned int) time(0));
    for (int add = 0; add < mas; add++) {
     
     ATbox[HI]=1+ (int) (rand() * 315.0/(1.0 + RAND_MAX));
     cout <<  ATbox[HI]<<" ";

     

     if (ATbox[HI] == 315)  { cout <<"大当たり !ラッキースタート"<<endl;
     ax++;
      for (int set = 0; set<6; set++){x=0;
       x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX));
      }
      if (x <= 3){ATC:
        cout<< x << " やったね! 確立変動権利確定! おめでとうございます!" <<endl;
       for (int set = 0; set<6; set++){x=0;
        x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX)); }ax++;
       
        if(x <= 3){goto ATC;}
      
      
      if  (x >=3) {cout << x <<" 残念! カクリツヘンドウ再抽選ハズレデス"<<endl;}
       
    }
     
     }
     
    if (ATbox[HI] == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (ATbox[HI] == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (ATbox[HI] == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (ATbox[HI] != 315){cout <<"ハズレです"<<endl;}


    }
     
        break; }cout <<endl;
     cout <<"大当たり回数は、"<<ax<<endl;
    cout <<"出玉数は、"<<ax*2250<<"発です。"<<endl;
    cout <<"投資額は、"<<mas*50<<"円です"<<endl;
    cout <<"回収金額は、"<<ax*5625<<"円です"<<endl;
      cout <<endl;
      cout <<endl;
      
      
     cout << ""<<endl;
     

     


    /////////ここまで

     if(mas==0){

     cout<<"パチンコケンショウプログラム スタート"<<endl;

     cout<<"パチンコカクリツケンショウプログラム スタート"<<endl;
     cout<<"投資額 300回転 1000円×20回転 = 1万5千円"<<endl;
     
    srand((unsigned int) time(0));
    for (int add = 0; add < 300; add++) {
     
     box[HI]=1+ (int) (rand() * 315.0/(1.0 + RAND_MAX));
     cout <<  box[HI]<<" ";

     

     if (box[HI] == 315)  { cout <<"大当たり !ラッキースタート"<<endl;
     ax++;
      for (int set = 0; set<6; set++){x=0;
       x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX));
      }
      if (x <= 3){AT:
        cout<< x << " やったね! 確立変動権利確定! おめでとうございます!" <<endl;
       for (int set = 0; set<6; set++){x=0;
        x=1+ (int) (rand() * 6.0/(1.0 + RAND_MAX)); }ax++;
       
        if(x <= 3){goto AT;}
      
      
      if  (x >=3) {cout << x <<" 残念! カクリツヘンドウ再抽選ハズレデス"<<endl;}
       
    }
     
     }
     
    if (box[HI] == 215){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] == 115){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] == 15){cout <<"リーチ おしーい ハズレデス"<<endl;}
    else if (box[HI] != 315){cout <<"ハズレです"<<endl;}
    }
    cout <<endl;
    cout <<endl;
    cout <<"大当たり回数は、"<<ax<<endl;
    cout <<"投資額15000円 回収金額は、"<<ax*5625<<"円です"<<endl;
    cout <<"出玉数は、"<<ax*2250<<"発です。"<<endl;
     
     
     }
     cout <<endl;
    cout << "再度プレイしますか? 再プレイ1 終了2" <<endl;
    cin >> replay;
     if (replay!=1){goto end;}
    else if(replay==1){goto atc;}

     end:
     
    cout << "eでプログラム終了します。" <<endl;

     

    do {g = getchar();}
    while (g !='e');{ cout << "eが入力されました。" <<endl;}

     

     

    cout <<"プログラム終了!";
    return 0;
    }

     

    幾つかの機能を追加しました。

  • 2011年10月30日 15:23
     
     

    完成おめでとうございます。

    以下、少し気になったので。

    こちらのフォーラムは技術的な意見を交換する場ですが、
    あなたが最近書き込まれている内容は既に質問ではないと思います。
    そういった日記的な内容を書き記すのであれば、Blogなどでされた方が良いのではないですか?

  • 2011年10月31日 2:11
     
     

    この掲示板は、MSNフォーラムと書かれていたので

    (もちろん この掲示板のルールは、承知していますが)

    今回は、起承転結の最後の部分をまとめただけです。

    その方が体裁が良いと思いまして。

     

    あ でも質問は、ありますよ。 大した事でもないので質問しようか

    迷ってましたが。質問はあります。

    cout << "eでプログラム終了します。" <<endl;

     

    do {g = getchar();}
    while (g !='e');{ cout << "eが入力されました。" <<endl;}

     

     

    cout <<"プログラム終了!";
    return 0;
    }

    この部分で 処理を実行すると デバックモードが開いてしまいます。

    原因がわかりません。 そのまま継続で処理終了しますが 以下のメッセージが出力されます。

    Run-Time Check Failure #2 - Stack around the variable 'ATbox' was corrupted.

    プログラム test.exe: ネイティブ' はコード 0 (0x0) で終了しました。

     

  • 2011年10月31日 2:52
     
     
    丸投げソースはレビューするまい、反応はするまい、と心に決めていたのですが...。

    この部分で 処理を実行すると デバックモードが開いてしまいます。

    原因がわかりません。 そのまま継続で処理終了しますが 以下のメッセージが出力されます。

    Run-Time Check Failure #2 - Stack around the variable 'ATbox' was corrupted.

    プログラム test.exe: ネイティブ' はコード 0 (0x0) で終了しました。


    「デバッグ モードが開く」というのがどういう状況なのかが分からないですが、メッセージによるとスタック領域を破壊してますね。
    配列を 2 つ定義しているようですが、どちらも配列の範囲外しかアクセスしてないみたいですが。

    # 我ながらスルー力ないなぁ...。
  • 2011年10月31日 7:16
     
      コードあり
    プログラム開始時の文言、「シュミレート」じゃなくて「シミュレート」ですね。
    gotoだらけで読み難いソースなので、ちゃんと読んでないですけどboxとATboxは配列じゃなくても良いような気が。
    散々言われている事ですが、C/C++の基礎から勉強された方が良いと思います。
    
    
    
    
    do {g = getchar();}
    while (g !='e');{ cout << "eが入力されました。" <<endl;}
    

    これとか、どういった意味でwhileのあとにブロック付けてるんでしょう。


    • 編集済み NF64 2011年10月31日 7:17
    •  
  • 2011年10月31日 13:37
    モデレータ
     
     

    この掲示板は、MSNフォーラムと書かれていたので

    MSN と MSDN は違います。

    Run-Time Check Failure #2 - Stack around the variable 'ATbox' was corrupted.

    英文を読む、検索してみるから試しましょう。

    というか、適当に作ってたらだめですよ。C/C++ は特に。動けば OK なんて思ってたら大間違いです。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。