ページ 11

実行すると・・・。

Posted: 2009年6月05日(金) 16:56
by はなたれパンダ
[1] 質問文
 [1.1] 自分が今行いたい事は何か
    ソースを実行したい

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)

 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
  
   警告 W8004 game.cpp 85: 'keikenchi' に代入した値は使われていない(関数 bamen1() )

 [1.4] 今何がわからないのか、知りたいのか
    
  コンパイルして実行するとオープニングメッセージが出て、エンターキーを押すまでは出来るんですが、
  それ以上進まないのですが、警告表示がひとつ出ているのが影響いてるんでしょうか。
  

[2] 環境  
 [2.1] OS : Windows
 [2.2] コンパイラ名 : Borand C++

[3] その他
 
 今回が初めてのソースづくりです。(っていっても本を見てうっただけ・・・。)


--------------------------------------------------------------------------------

Re:実行すると・・・。

Posted: 2009年6月05日(金) 17:21
by non
ゲームのルールがわからないので、何が正しいのかは不明ですが、プログラムが先に進まないのは
int ransuu(int i) 関数内の
while((kekka =(double)rand()/RAND_MAX*i) <=i);
に間違いがあります。これでは、このwhileから抜けません。
while((kekka =(double)rand()/RAND_MAX*i) >i);
に、すればとりあえず動くと思います。

警告は
1つめ
int main(void);
int bamen0(void);
int bamen1(void); のように、voidを書きます。
2つめ
main関数の最後に
return 0;
と書きます。
3つめ
int bamen1(void)関数内の
int keikenchi=0 ; は int keikenchi=0; で初期値がいりません。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 17:45
by non
打ち間違えた。
>int keikenchi=0 ; は int keikenchi=0; で初期値がいりません。
int keikenchi=0 ; は int keikenchi; で初期値がいりません。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 17:46
by はなたれパンダ
ありがとうございます。大変助かりました。
とりあえず実行できました。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 18:01
by はなたれパンダ
とりあえず実行は出来たんですが、
1問目を解くと”おめでとう、何もしないで経験値・・・。”が何回か表示されて
次の問題にいくんですがこれはどうしてですか?

Re:実行すると・・・。

Posted: 2009年6月05日(金) 18:27
by GPGA
>次の問題にいくんですがこれはどうしてですか?
そのようにプログラムが組まれているからです。
そもそも、どういう動作をすることを希望しているのですか?


プログラムに対しての突っ込み
ランダムの計算式がおかしい
i未満の値を出力するのであれば

int ransuu(int i)
{
  int kekka ;
  kekka = (int)(rand() / (RAND_MAX + 1.0) * i);
  return kekka;
}

となる。
+1.0を入れないと(1 / RAND_MAX)の確率でiの値が出てしまう
 


警告にcppファイルあることからこれをC++でコンパイルしているとして
nonさんに突っ込み。


>voidを書きます。
C++では引数を記述しない場合、void型とみなされるので
引数がvoidのときは、何も記述しないのが一般的です。

Cではプロトタイプ宣言時に引数を記述しない場合、引数を省略したとみなされるので
引数がvoidのときは、voidを入れるのが一般的です。


>main関数の最後に
>return 0;
main関数のreturnを省略した場合 return 0が暗黙のうちに実行されることが規格で
決まっているため、必ずreturn 0を入れなければいけないというわけではありません。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 18:52
by 初級者
プログラムは思ったとおりには動きません。
書いたとおりに動きます。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 19:40
by non
>警告にcppファイルあることからこれをC++でコンパイルしているとして
>nonさんに突っ込み。

確かに。でも、プログラムの先頭にプログラム名として game.cって書いてあったよ。

Re:実行すると・・・。

Posted: 2009年6月05日(金) 20:11
by はなたれ
わかりました。
このソースにいったん画面をクリアのするという部分がなかったんですね。
(^-^)/ドモすみませんでした。
また何かあったらよろしくお願いします。

Re:実行すると・・・。

Posted: 2009年6月06日(土) 00:20
by GPGA
>確かに。でも、プログラムの先頭にプログラム名として game.cって書いてあったよ。
つまり、環境が書かれているにもかかわらず、プログラムソースのコメントのほうを優先するというわけですね。
個人的にいかがなことかと思いますが・・・。


さて、Cであったとして
1番に関しては、引数にvoidを入れるべきですが
2番に関しては、C99ではmainがint型を返し、かつreturn文が省略された場合
終了時に0を返す仕様となっているため、returnを省略することが可能です。