海外旅行から帰ってきたら、まず何を食べる?

#include "stdafx.h"
#include "stdlib.h"

int _tmain(int argc, _TCHAR* argv[])
{
Int y,m,d;

while(swgo!=0)
{
printf("生年月日を入力してください\n");
printf("年=") ; scanf_s("%d",&y) ;
printf("月=") ; scanf_s("%d",&m) ;
printf("日=") ; scanf_s("%d",&d) ;
printf("[%d年%d月%d日]\n",y,m,d) ;
printf("\n");

if(m*100+d=>0321 && m*100+d=<0419 ) printf("牡羊座\n");
if(m*100+d =>0420 && m*100+d=<0520 ) printf("牡牛座\n");
if(m*100+d =>0521 && m*100+d=<0621 ) printf("双子座\n");
if(m*100+d =>0622 && m*100+d=<0722 ) printf("蟹座\n");
if(m*100+d =>0723 && m*100+d=<0822 ) printf("獅子座\n");
if(m*100+d =>0823 && m*100+d=<0922 ) printf("乙女座\n");
if(m*100+d =>0923 && m*100+d=<1023 ) printf("天秤座\n");
if(m*100+d =>1024 && m*100+d=<1121 ) printf("蠍座\n");
if(m*100+d =>1122 && m*100+d=<1221 ) printf("射手座\n");
if(m*100+d =>1222 && m*100+d=<0119 ) printf("山羊座\n");
if(m*100+d =>0120 && m*100+d=<0218 ) printf("水瓶座\n");
if(m*100+d =>0219 && m*100+d=<0320 ) printf("魚座\n");

}
while(jsw==1)
printf("\n==終了ならを、継続なら1を入力してください=");sacnf_s("%d",&swgo);

long s;
unsigned int randmx;
int rj;

randmx=32767;
s=12357;

srand(s);

for(i=1;i<=imax;i++){
rj=rand()*6.0/((float) randmx)+1;
printf("%5d",rj);
if(i&10==0) printf("\n");

rj=1 大吉
rj=2 中吉
rj=3 小吉
rj=4 末吉
rj=5 小凶
rj=6 末吉
rj=7 小凶
rj=8  中凶
rj=9 大凶



return 0;

}

一応 考えて見て打ってみたのですが、エラーが出でしまい出来ません。 自分でもこれでは駄目だとわかります。特に乱数の使い方がわかりません。
 何をしたいかと言うと 星座おみくじを作りたいのです。 
生年月日を入れてくださいという画面が出て 生年月日を入れたら 星座が出て、 1-9の好きな数を入れてくださいと画面が表示され 数字を入れたら ランダムで おみくじの結果を出すプログラムを作りたいです。 
 どなたか アドバイスください。 よろしくお願いします。

A 回答 (1件)

>エラーが出でしまい出来ません。


エラーというのは一番の解決の糸口です。
ですので、質問の際にはエラーを(ちょっと長くても)コピペするのが正解です。


とりあえず脳内コンパイルしてみます。

>#include "stdafx.h"
この中にstdio.hとかtchar.hがincludeされてるのかな?
stdafx.hの中身も示したほうが良いかと思います。

>Int y,m,d;
Iが大文字になっています。

>while(swgo!=0)
swgoとは何でしょう?

>scanf_s("%d",&y) ;
scanf_sの使い方がまずそうです。
http://msdn.microsoft.com/ja-jp/library/w40768et …

>if(m*100+d=>0321 && m*100+d=<0419 ) printf("牡羊座\n");
数値の先頭に0をつけると8進数として扱われます。なので今回のケースではつけてはいけません。
それと演算子が間違っています。<=と>=が正解です。

>while(jsw==1)
>printf("\n==終了ならを、継続なら1を入力してください=");sacnf_s("%d",&swgo);
jswとは?
それとこれだとprintfを無限ループで実行することになります。ちゃんと{}で囲みましょう。

>for(i=1;i<=imax;i++){
iとimaxが宣言されていない気がする。
あとforの閉じ中括弧がありません。

>rj=rand()*6.0/((float) randmx)+1;
randmxなどとして自分で用意する必要はありません。というか処理系によってかわるので、乱数の最大値はRAND_MAXを利用しましょう。

>if(i&10==0) printf("\n");
文法的には問題ないですが、これはどういう意図なのでしょう?

>rj=1 大吉
ここからは完全に謎ですね。

こんなところでしょうか?

>特に乱数の使い方がわかりません。
乱数の使い方はそこまで間違ってはいない気がします。

ここら辺を読んで基礎から勉強しましょう。
http://9cguide.appspot.com/
    • good
    • 0
この回答へのお礼

参考になりました。 演算子が間違っていたのを気づきませんでしたありがとうございます。

お礼日時:2011/01/20 22:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!