C++プログラム、アドバイス下さい。 | ぷろぐらみんぐ日和

C++プログラム、アドバイス下さい。

今回C++の基本をある程度覚えたので、


C言語の知識と合わせて占いプログラムを作成してみました。


コンソールアプリケーションですがC++の基本なので勘弁してください。


・プログラム概要

まず起動し、yesを入力で数字選び、

noでプログラム終了。


yesを入力した後数字を選んで、

乱数で占いの結果を分岐して表示。

ラッキーカラー関数でラッキーカラーを表示


最後にnoを押すと終了、それ以外を押すとループ。

一度ループするとループ回数が1カウントされる。



・問題点

ラッキーカラー関数からラッキーカラーを受け取るとき、

うまくいかない。

hanteiに文字を代入するときが間違っていると思います。



下のプログラムソース見て、解決策がある方教えていただきたいです。


占いソフトをアップしておきます。


ダウンロードパスワードは「mudaissozai」。

game.exe


//くじ引きプログラムテスト


#include<iostream.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>

char *rakkycolor(char *hantei){//ラッキーカラー関数

int color;

srand((unsigned int) time(0));

color = 1 + (int) (rand() * 12.0 / (1.0 + RAND_MAX));
switch(color)
{
case 1 :
hantei[1] = '赤';
return hantei;
break;
case 2 :
hantei[1] = '青';
return hantei;

break;
case 3 :
hantei[1] = '緑';
return hantei;

break;
case 4 :
hantei[1] = '黄';
return hantei;

break;
case 5 :
hantei[1] = '水';
return hantei;

break;
case 6 :
hantei[1] = '朱';
return hantei;

break;
case 7 :
hantei[1] = '橙';
return hantei;

break;
case 8 :
hantei[1] = '黒';
return hantei;

break;
case 9 :
hantei[1] = '灰';
return hantei;

break;
case 10 :
hantei[1] = '茶';
return hantei;

break;
case 11 :
hantei[1] = '金';
return hantei;

break;
case 12 :
hantei[1] = '銀';
return hantei;

break;
default :
hantei[1] = 'E';
hantei[2] = 'R';
return hantei;
break;
}
return 0;
}

int main()
{
int hakosu;
int mozilong;
char yesno[4];//やるかやらないか判定
int returnnum; //繰り返し回数
char hantei[10];

returnnum = 1;//繰り返し数の初期値

cout << "占いプログラムです。占いをしますか?yesでプレイ、noで終了。" << endl;
cin >> yesno;

if(strcmp(yesno, "yes") == 0)//第一if開始 yesだったら反復開始
{

do //占いの反復 最後にendが入力されるまでループ
{

srand((unsigned int) time(0));

cout << "1~10の数字があります、数字を選択!" << endl;
cin >> hakosu;

if((hakosu >= 1) && (hakosu <= 10))//rand
{
hakosu = 1 + (int) (rand() * 10.0 / (1.0 + RAND_MAX));
switch(hakosu)
{
case 1 :
cout << "今日は何をやってもハッピーな一日となるでしょう。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;
break;
case 2 :

cout << "運動をして健康を維持しましょう。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;
break;
case 3 :

cout << "食事の栄養バランスに気をつけてください。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 4 :

cout << "勉強がとてもはかどります。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;
break;
case 5 :
cout << "恋愛運が高めです。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 6 :

cout << "金運が高いです。おこずかいがもらえるかも。" << endl
<< "ラッキーカラーは" << hantei << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 7 :

cout << "今日は普通みたいです。特に何も起こらないでしょう。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 8 :

cout << "落とし穴注意(いろんな意味でね。)" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 9 :

cout << "目立つ行動を避けましょう。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;

break;
case 10 :

cout << "今日は何をやっても駄目でしょう。家でゆっくりするのがお勧め。" << endl
<< "ラッキーカラーは" << rakkycolor(hantei) << "です。"
<< endl << "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;
break;
default :
cout << "1~10を入力してください。" << endl
<< "現在連続" << returnnum << "回目" << endl
<< "終了するなら「no」を入力、リスタートは他の文字を入力" << endl;
cin >> yesno;
break;
}

}
else//randelse
{
cout << "1~10を入力してください。" << endl;
}


returnnum++;
}while(strcmp(yesno, "no") != 0);//do~while文のエンド

}//第一if終了

if(strcmp(yesno, "no") == 0)//第二if開始
{
cout << "noを選んだので終了します。" << endl;

}//第二if終了

if((strcmp(yesno, "yes") != 0) && (strcmp(yesno, "no") != 0))
{
cout << "エラーです\nyesかnoで答えてください。";
}

return 0;
}