簡単な占いプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
おろしポン酢

簡単な占いプログラム

#1

投稿記事 by おろしポン酢 » 14年前

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

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

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

box
記事: 2002
登録日時: 14年前

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

#2

投稿記事 by box » 14年前

こちらではコンパイルしておらず、ソースコードをザッと見ただけですが、
switch文の「case何とか」の中で
return 0;
しているのは大いにまずいんじゃないかなぁ、なんて思ったりしてます。
ふつうは
break;
とか書くんじゃないでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

欲怨

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

#3

投稿記事 by 欲怨 » 14年前

switch文をつかうときには
条件に合ったプログラムを動作させた後に、
その条件分岐から抜けなくてはいけません
その場合

コード:

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

おろしポン酢

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

#4

投稿記事 by おろしポン酢 » 14年前

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

新一

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

#5

投稿記事 by 新一 » 14年前

おつかれさまです。

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

uranai = rand() % 5;

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

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

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

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

#6

投稿記事 by h2so5 » 14年前

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

おろしポン酢

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

#7

投稿記事 by おろしポン酢 » 14年前

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

閉鎖

“C言語何でも質問掲示板” へ戻る