ページ 11

簡単な占いプログラム

Posted: 2011年2月20日(日) 00:53
by おろしポン酢
プログラミング初心者です。
ボタンを押すと、5種類の結果が表示される、
という超シンプルな占いプログラムを作ろうと思ったのですが、
うまく作れませんでした。
ネットで独学で勉強し、まだソースを切り貼りしてるだけなので、
未熟なのですが、短いソースファイルを見て、
間違ったところを指摘して頂けませんか?

ソースファイルはここに置きました。
http://w01.tp1.jp/~a191512802/
コンパイルエラーも出ていません。
乱数を取得して、switch文で分岐しているところが、
おかしいと思うのですが、
表示方法の動作の理解が乏しく悪いのか、
文法的に悪いのかよくわかりません。
よろしくお願いします。

環境はWindows7、VC++2010です。
こんな質問ですみません。よろしくお願いします。

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 00:58
by box
こちらではコンパイルしておらず、ソースコードをザッと見ただけですが、
switch文の「case何とか」の中で
return 0;
しているのは大いにまずいんじゃないかなぁ、なんて思ったりしてます。
ふつうは
break;
とか書くんじゃないでしょうか。

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 01:22
by 欲怨
switch文をつかうときには
条件に合ったプログラムを動作させた後に、
その条件分岐から抜けなくてはいけません
その場合

コード:

switch(条件式)
{
  case(条件1) : やること1;
     break;
    case(条件2) : やること2;
     break;
etc...
}
という風に書かなければなりません
もしこの「break;」を「return 0;」にしてしまうと
条件分岐から抜けるのではなく、
0を返り値として返しているだけなので
動作はまったく異なります。
そのため条件分岐から抜けられず、
プログラムが無限ループしてしまうのです。

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 01:35
by おろしポン酢
早速の回答ありがとうございます!
switch文のbreakとreturnの違いも分からずにいました。
お二人とも、ありがとうございました。
まだエラーが出て、乱数を取得するところで、
わけのわからないエラーが出て、途方に暮れてますが、
解決という事にしておきます。
WM_COMMANDの下のIF文も、
いらないような気がしてきました。
やっぱり年を取りすぎて、今の技術に着いていけないようですw

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 03:50
by 新一
おつかれさまです。

コメントさせてください。

uranai = rand() % 5;

の部分がおかしいと思います。

通常Cではrand()は0〜1までの乱数を返します。

なので、私であれば (rand()*5) %5 とします。

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 04:00
by h2so5
新一 さんが書きました: 通常Cではrand()は0〜1までの乱数を返します。
VBやjavascriptは0~1ですが、Cは0~32767が普通じゃないでしょうか?
処理系にもよるのかもしれませんが。

Re: 簡単な占いプログラム

Posted: 2011年2月20日(日) 10:11
by おろしポン酢
あ、回答ありがとうございます!
締め切っていて、答えてもらえるとは思いませんでした。
むかーし、Cをかじった程度で、
windowsのプログラミングに挑戦してしまいました。
身近にCやWindows SDKに詳しい人がいないので、
この掲示板で質問させて頂きました。
本当にありがとうございます!