掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25884

乱数を使った数当てゲーム
投稿者---雪だるま(2006/01/31 20:32:33)


こんにちは、雪だるまです。
課題で乱数を使った数当てゲームが出ました。乱数の使い方が良く分からず、試行錯誤しています。色々調べてみたんですが、乱数の資料が少ない・・・・・・。
出来上がったプログラムをコンパイルしてみたところ、乱数は必ず0が出てきてしまいます。問題文の乱数の式の使い方を教えてください。よろしくお願いします。
コンパイラVisual Studio 2005、OSはXPです。

問題
0〜99の数をランダムに設定し、それを当てるゲームを作れ。入力した数が正解より小さければ「正解より小さいです」、大きければ「正解より大きいです」と表示。範囲外のものが入力されたらもう一度入力させる。10回行っても正解しない場合は答えを表示して終了する。正解した場合も称えるメッセージを表示して終了。なお、下記の式を利用すること。

#include <stdlib.h>

(mainの中に)   int kotae=(int)(rand()*100/(1.0+RAND_MAX));


自分で書いたプログラム
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int kotae=(int)(rand()*100/(1.0+RAND_MAX));
    int kazu;
    int cnt=0;

    printf("数当てゲームです。0〜99の数を入力してください。\n");
    scanf("%3d",&kazu);

    
    do{

          if((kazu>=0)&&(kazu<=99))
          {
                if(kazu>kotae){
                    printf("正解より大きいです。\n");
                    printf("もう一度入力してください。\n");
                    scanf(" %3d",&kazu);
                    cnt++;
                }
                else if(kazu<kotae){
                    printf("正解より小さいです。\n");
                    printf("もう一度入力してください。\n");
                    scanf(" %3d",&kazu);
                    cnt++;
                }
                else{
                    printf("正解!おめでとう!!\n");
                    break;
                }
          }
          else{
            printf("0〜99の数字をもう一度入力してください。\n");
            scanf(" %3d",&kazu);
            cnt++;
          }
    }while(cnt<10);
    
    if(cnt=10){
        printf("ゲームオーバー!答えは%2dでした。",kotae);
    }
    return 0;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:乱数を使った数当てゲーム 25885 あかま 2006/01/31 20:37:37


No.25885

Re:乱数を使った数当てゲーム
投稿者---あかま(2006/01/31 20:37:37)


srandも使わないとダメです。
http://www9.plala.or.jp/sgwr-t/lib/srand.html


この投稿にコメントする

削除パスワード

No.25888

Re:乱数を使った数当てゲーム
投稿者---雪だるま(2006/01/31 21:15:38)


>srandも使わないとダメです。
こんな感じで作ってみましたが、コンパイルに失敗します。使い方が悪いんだと思うんですが、どう使ったら良いでしょう?

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

int main(void)
{
    int kazu;
    int cnt=0;
    srand(time(NULL)); 
    int kotae=(int)(rand()*100/(1.0+RAND_MAX));

    printf("数当てゲームです。0〜99の数を入力してください。\n");
    scanf("%3d",&kazu);

    do{

          if((kazu>=0)&&(kazu<=99))
          {
                if(kazu>kotae){
                    printf("正解より大きいです。\n");
                    printf("もう一度入力してください。\n");
                    scanf(" %3d",&kazu);
                    cnt++;
                }
                else if(kazu<kotae){
                    printf("正解より小さいです。\n");
                    printf("もう一度入力してください。\n");
                    scanf(" %3d",&kazu);
                    cnt++;
                }
                else{
                    printf("正解!おめでとう!!\n");
                    break;
                }
          }
          else{
            printf("0〜99の数字をもう一度入力してください。\n");
            scanf(" %3d",&kazu);
            cnt++;
          }
    }while(cnt<10);
    
    if(cnt=10){
        printf("ゲームオーバー!答えは%2dでした。",kotae);
    }
    return 0;
}



この投稿にコメントする

削除パスワード

No.25891

Re:乱数を使った数当てゲーム
投稿者---雪だるま(2006/01/31 21:45:37)


色々、ためしていますが駄目です・・・・・・。チェックお願いします。

#include <stdio.h>
#include <stdlib.h>


int main(void)
{
    int kazu;
    int cnt=0;
    srand(time(NULL));
    int kotae =(int)(rand()*100/(1.0+RAND_MAX));

    printf("数当てゲームです。0〜99の数を入力してください。\n");
    scanf("%3d",&kazu);



コンパイルエラー文です。
kadai2.c
kadai2.c(10) : error C2143: 構文エラー : ';' が '型' の前にありません。
kadai2.c(19) : error C2065: 'kotae' : 定義されていない識別子です。



この投稿にコメントする

削除パスワード

No.25892

Re:乱数を使った数当てゲーム
投稿者---Blue(2006/01/31 21:57:22)


C言語では変数宣言はブロックの先頭になければなりません。

> srand(time(NULL));
> int kotae =(int)(rand()*100/(1.0+RAND_MAX));

int kotae;

srand( ( unsigned )time( NULL ) ) ;
kotae = ( int )( rand() * 100 / ( 1.0 + RAND_MAX ) );

と宣言文と代入式を分けましょう。


この投稿にコメントする

削除パスワード

No.25893

Re:乱数を使った数当てゲーム
投稿者---雪だるま(2006/01/31 22:15:10)


>C言語では変数宣言はブロックの先頭になければなりません。

うすうす感づいてはいたんですが、問題文に惑わされました。
指示どおりにしたらうまくいきました!ありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧