血液型診断プログラム完成!

kerotan0820
記事: 91
登録日時: 14年前

血液型診断プログラム完成!

投稿記事 by kerotan0820 » 14年前

学校の先生に if文 をキチンと覚えているかというのを確かめる為の課題として出された
「血液型診断ゲーム」を作るという課題。

血液型を入力したらその血液型の特徴、性格を表示せよとのものでした。

まだCは全く使いこなせませんが、いくらなんでもレベルの低い課題すぎる…。
実力の無い私なりに頑張ってみました。

(チャットにて皆様の力をお借りした部分が多々あります  本当に本当にありがとうございます)

にしても…行数が…不吉すぎる…

CODE:

#include
#include 

void par4(int *,float *);

int main()
{
	int Mode,ketsueki,ketsueki1[5];
	int ketsueki2[4],Ygoukei=0,b; /*[0]=A,[1]=B,[2]=O,[3]=AB*/
	char kata[5][20]={"A型","B型","O型","AB型"};
	char a;
	float ketsuekipar[4];

	

	/*******************
	プログラム内容の説明
	*******************/
	printf("          ○-**********************************************-○\n");  
	printf("          *          ◇なんちゃって血液型ゲーム!◇          *\n");
	printf("          ○-**********************************************-○\n");
	printf("          *                                          *\n");
	printf("          *               ①血液型別性格判断一覧             *\n");
	printf("          *               ②あなたは何型よりの人?           *\n");
	printf("          ○-**********************************************-○\n");
	printf("          *                     <お願い>                   *\n");
	printf("          *・ウェブサイトから収集したデータを元に作成しました*\n");
	printf("          *表示される性格判断の内容は、実際と異なる可能性があ*\n");
	printf("          *ります。本気にすると気に触れるような内容もあると思*\n");
	printf("          *いますので、気軽に遊んでください(`・ω・)      *\n");
	printf("          ○-**********************************************-○\n");
	printf("                              <モード別解説>                \n");
	printf("                         ①血液型別性格判断一覧               \n");
	printf("          インターネット上より収集したデーターベースをそのまま\n");
	printf("          まとめてあります。\n");
	printf("                         ②あなたは何型よりの人?             \n");
	printf("          '①'でのデーターベースを元に、YES、NOの二択の質\n");
	printf("          問形式にしたものです。\n");
	printf("          すべての血液型の質問が不順で表示されます。\n");
	printf("          最終的に、あなたの性格、特徴はそれぞれの血液型の特徴が何パーセント含まれているのかを測定します!。\n");

	while(1){
	 printf("<モード選択>\n");
	 printf("①を実行したい方は1を。②を実行したい方は2を入力してください\n");
	 printf("入力:");
	 scanf("%d",&Mode);
	 if(Mode==1){
		 system("cls");// Dos画面をリセット

		printf("(1)A型 (2)B型 (3)O型 (4)AB型\n");
		printf("入力:"); scanf("%d", &ketsueki);
switch (ketsueki) {
	case 1:
		printf("  <A型>\n");
		printf("ジャンル選択:(1)基本 (2)恋愛");
		printf("入力:");scanf("%d",&ketsueki1[0]);
		if(ketsueki1[0]==1){
			//基本
			printf("   \n");
			printf("A型の男性は“石橋をたたいて渡る”タイプだよ。\n");
			printf("何事にも細かく計画を立てて慎重に行動するようだね。\n");
			printf("人や社会に対する見方や批判は厳しく、また自分にも厳しいみたい。 \n");
			printf("でも置かれた立場をよく理解して、何事にも責任感を持って行動するよ。\n");
			printf("さらに、規則や決まり事をきちんと守る努力もするよ。\n");
			printf("そんな観念を貫くことで、自分にも厳しくなるので、\n");
			printf("知らず知らずの内に他人にも同じ事を要求し、厳しい観念を押しつけてしまうこともあるかも。\n\n");			

		}else if(ketsueki1[0]==2){
		//恋愛
			printf("  \n");
			printf("A型男性は、自分の気持ちを上手に伝えることができないみたいだね。\n");
			printf("相手を心の中で想っている内に、理想化して、どんどん相手を好きになってしまうタイプだよ。\n");
			printf("自己表現の下手なA型の男性は、恋愛のアプローチも下手みたいだね。\n");
			printf("告白するのに、場所や時間などシチュエーションを慎重に考えすぎて、逆に相手に愛想のない素振りをしてしまったり、\n");
			printf("チャンスを逃して他の男性に奪われてしまうこともあみたいだよ。\n\n");

			printf("  \n");
			printf("A型の男性は、プレイボーイには決してなれないタイプのようだね。\n");
			printf("同時に複数の女性を愛するといった、もてあそぶような真似が許せないんだ。\n");
			printf("仮に、軽い気持ちでつき合った女性だとしても、誠心誠意相手を愛するよ。\n");
			printf("そして、相手に飽きるても、別れを告げることができなくて悩むことがよくあるよ。\n");
			printf("また、その恋の一途さは、ともすると相手を束縛してしまう事もあるみたいだね。\n");
			printf("自分の好みに合わせファッションや趣味、交友関係など相手に無理強いをしてしまうこともあって、\n");
			printf("自分の理想通りの女性に変えたいと願うタイプだね。\n");
			printf("また、A型の男性は意外と嫉妬深いところもあるよ。\n");

		}else{
			printf("!入力エラー:1、2以外の数字が入力されました\n");
			printf("プログラムを再起動してください\n");
		}
			
			
		break;
	case 2:
		printf("  <B型>\n");
		printf("ジャンル選択:(1)基本 (2)恋愛");
		printf("入力:");scanf("%d",&ketsueki1[0]);
		if(ketsueki1[0]==1){
		//基本
			printf("  \n"
			"B型の男は、ゆったりとした心の持ち主で明朗な性格なんだ!\n"
			"他人におだてられると、すぐその気になって行動するし、いったん決断すると、真っ直ぐに目標に向かって突進するぞ~!\n"
			"他人からはとても頼もしく見えて、リーダー的存在になることも多いみたいだな。\n"
			"だけど、自分だけが正しいと信じて、客観性を考えず行動に走りがちだな。\n"
			"独り善がりな面がでて、他人からは反感をかって、\n"
			"人とかけはなれた存在になることもあるからな、気をつけた方がいいかもな。\n"
			"純真な性格が災いし、結果的に孤立してしまうことになるぞ。\n"
			"だけど、気持ちの切り替えがと~っても上手いから、いろいろと筋道を立てて、\n"
			"自分で自分を納得させて、次の瞬間にはもういつもの自分を取り戻しちゃってるぞ~。\n\n");

		}else if(ketsueki1[0]==2){
		//恋愛
			printf("  \n");
			printf("ものごとに一貫性がないというB型の男の性質は、恋愛面にも強く影響しているぞ!\n");
			printf("B型の男は、自分のまわりにいる女のそれぞれの良いところを比べて、\n");
			printf("それぞれの長所に惹かれて、異性に対する好き嫌いがはっきりしないみたいだな。\n");
			printf("また気分次第で、好みがコロコロと変わってしまうんだ。\n");
			printf("だから、B型の男は、浮気っぽく、女性にだらしないと思われがちなんだ。\n");
			printf("だけど、同時に何人もの女を好きになれても、実際に複数の女の間を渡り歩くというような器用なまねは出来ないんだ。\n");
			printf("このように女の好みがないように見えるB型の男だけどな、ちゃんと好きな女のタイプは存在するのだ!\n");
			printf("自分自身が型にはまらない自由人間なだけあって、\n");
			printf("女にも個性的なタイプを求めるようで、型破りな女を妻にする傾向が強いようだ!\n\n");

			printf("  \n");
			printf("意中の女が自分のものになったと思ったとたん、\n");
			printf("それまでのマメな態度が一転することもあるみたいだぞ~!\n");
			printf("しかし、B型の男が釣った魚に餌をやらないと思っているわけでもなく、相手の女にあきたわけでもないのだ!\n");
			printf("B型の男は、愛しているという言葉をいちいち口に出さなくても、自分の態度で相手には十分わかってもらえると考えているんだ!\n");
			printf("愛している二人だからこそ言葉はいらない、というのも時と場合によるんだがな~。\n");
			printf("テレ屋で口ベタなB型の男だけど、態度で示すばかりでなく、口に出すこともとても重要だぞ!\n");

		}else{
			printf("!入力エラー:1、2以外の数字が入力されました\n");
			printf("プログラムを再起動してください\n");
		}
		break;
	case 3:
		printf("  <O型>\n");
		printf("ジャンル選択:(1)基本 (2)恋愛\n");
		printf("入力:");scanf("%d",&ketsueki1[0]);
		if(ketsueki1[0]==1){
			//基本
			printf("  \n");
			printf("O型の男性は自分の目標をしっかりと持っているぞ~。\n");
			printf("そして、絶えずそれに向かって前進しようと努力するのだ。\n");
			printf("他人の力をあてにしないで、持ち前の精神力で困難も乗り越えていけるタイプだぞ。\n");
			printf("計画性に欠けるところもあるけど、小さな事にはこだわらない、その場その場で対処しながら目標に向かって行くところもあるな~。\n");
			printf("自分の能力に確信を持った部分があって、他人を知らず知らずに見下してることもあるんだ。\n");
			printf("だから、時としてまわりから浮いた存在になってしまうこともあるね。\n");
			

		}else if(ketsueki1[0]==2){
		//恋愛
			printf("  \n");
			printf("O型男性が恋に落ちると、どんな障害があろうとも思いを遂げようと努力するんだ。\n");
			printf("この一途な姿勢は、仕事や自分の置かれている立場など何もかも忘れてつき進むぞ\n");
			printf("そして相手の気持ちや考え、立場なども一切関係なしで押しまくるのみ!\n");
			printf("だから少し問題があるようだね。\n\n");
			
			printf("  \n");
			printf("O型男性は、恋愛には不器用なタイプのようだね。\n");
			printf("だけど、もう少し相手の心情を理解して、\n");
			printf("自分の気持ちを効果的に伝えるように努力が必要のようだな。\n");
			printf("押すばかりでなく時には引くことも恋を実らせる秘訣かもしれないな。\n");
		
		}else{
			printf("!入力エラー:1、2以外の数字が入力されました\n");
			printf("プログラムを再起動してください\n");
		}
		break;
	case 4:
		printf("  <AB型>\n");
		printf("ジャンル選択:(1)基本 (2)恋愛\n");
		printf("入力:");scanf("%d",&ketsueki1[0]);
		if(ketsueki1[0]==1){
			//基本
			printf("  \n");
			printf("AB型の男性は、あらゆる面で物事を器用に無駄なくこなせる能率的なタイプだ。\n");
			printf("また、感受性が豊かで、感傷的で詩的なところもあって、かなりの理想論者なんだ\n");
			printf("能率的に仕事をこなす一方で、非現実なことを考えることもできるんだ。\n");
			printf("時によって表現の仕方が違ったりするから\n");
			printf("人からは二重人格的に思われたり、変わり者扱いされることもあるんだ。\n");


		}else if(ketsueki1[0]==2){
		//恋愛
			printf("  \n");
			printf("いつもは現実感のあるAB型男性が恋をすると、\n");
			printf("まるで違った人格になってまわりを驚かすことがあるようだ。\n");
			printf("テキパキと仕事をこなす働きバチのようなAB型男性が、\n");
			printf("急にボケッとさまざまな空想やもの想いにふけったりするんだ。\n");
			printf("燃え方は、非常に冷静で、決して自分を忘れることはない。\n");
			printf("根が消極的で、おまけにさっぱりしているから、\n");
			printf("いつのまにかはなればなれになる危険性もあるようだ。\n");
			printf("しかし、燃え出すと恋に狂うところもあって、\n");
			printf("いつも冷たいものの言い方をするAB型男性が、\n");
			printf("情熱的になって詩的な表現を用いることもあるんだ。\n\n");

			printf("  \n");
			printf("AB型男性は、恋愛を真剣に考えるタイプだから、\n");
			printf("デートの場所もなかなか面白いところを選ぶみたいだ。\n");
			printf("しかし、気ままなところもあるから、リードしすぎて相手をつまらなくさせていまうこともあるようだ。\n");
			printf("優柔不断なように見えて、実はピリピリしていることも多くて、\n");
			printf("つまらない言葉に傷つくことがあるんだ。\n");
			printf("そして気分を悪くして、なぜ怒っているのか聞かれても素直に言えず、\n");
			printf("ヒネクレ者に見られてしまうこともあるようだ。\n");
			printf("そんなAB型男性だけど、その日の気分で気持ちがかわるから、\n");
			printf("素直に言えなかったことでも次の機会には色々と話せたりするんだ。\n");
			printf("だから、とっつきにくいタイプに見られて、なかなか恋愛の機会がつかめないようだな。\n");
			printf("だから、とっつきにくいタイプに見られて、なかなか恋愛の機会がつかめないようだな。\n");
			printf("恋の相手とは、自然な出会いを期待しているんだ。\n");

		}else{
			printf("!入力エラー:1~5以外の数字が入力されました\n");
			printf("プログラムを再起動してください\n");
		}
	default:
		printf("!入力エラー:1~4以外の数字が入力されました\n");
		printf("プログラムを再起動してください\n");
		break;
}
     break;

	 }else if(Mode==2){
		 system("cls");// Dos画面をリセット
		for(a=0;a\n"
		"モード②が実行されました。\n"
		"このモードでは、20の質問に答えることで\n"
		"あなたの性格や特徴が何型なのかを調べる事\n"
		"が出来ます。\n"
		"早速、以下に表示される質問にy[yes],n[no]\n"
		"の二択でお答え下さい\n\n\n");

	/*質問内容*/
	printf("[質問1]\n");
	printf("・計画的にお金を使うことを心がけている\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[2]+=1;//O型質問
	}
	

	printf("[質問2]\n");
	printf("・人から二重人格的に思われたり、変わり者扱いされることがある…\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[3]+=1;//AB型質問
	}


	printf("[質問3]\n");
	printf("・噂話や井戸端会議に時間を割り振るのは面倒\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[1]+=1;
	}
	

	printf("[質問4]\n");
	printf("・不必要なものをあれこれと細かく買わない\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[3]+=1;
	}
printf("%c",a);
	printf("[質問5]\n");
	printf("・財テクな儲け話に興味あり( ̄ー ̄)\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[0]+=1;
	}

	printf("[質問6]\n");
	printf("・興味のないことに辛抱するのが苦手…\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[1]+=1;
	}

	printf("[質問7]\n");
	printf("・百円、一円、どれもお金はお金、それほど価値の差はかんじない\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[0]+=1;
	}
	
	printf("[質問8]\n");
	printf("・基本マイペースである\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[1]+=1;
	}
	

	printf("[質問9]\n");
	printf("・筋の通らない物事は嫌いである\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[0]+=1;
	}
	

	printf("[質問10]\n");
	printf("・実は妥協的な面があり、自信の問題も第三者の目で見てることがある\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[3]+=1;
	}
	

	printf("[質問11\n");
	printf("・仲間や部下(友人)などへの振る舞い(おごり)をよくする\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[2]+=1;
	}
	

	printf("[質問12]\n");
	printf("・物事を効率的にこなすのが得意である\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[3]+=1; 
	}
	

	printf("[質問13]\n");
	printf("・金銭的な計画が苦手…\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[1]+=1;
	}


	printf("[質問14]\n");
	printf("・物事をやり始めるとそのことにものすごく集中する!\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[0]+=1;

	}	

	printf("[質問15]\n");
	printf("・意図せず相手の反感をかってしまうことがある…。\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[1]+=1;
	}
	

	printf("[質問16]\n");
	printf("・計画を立てて物事を進行するのが好きである^^! \n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[0]+=1;
	}


	printf("[質問17]\n");
	printf("・仕事などにおいて手は抜けない。\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[2]+=1;
	}
	

	printf("[質問18]\n");
	printf("・自分自身が損をすることがあっても、人のためになるなら骨を折ることを惜まない!\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[2]+=1;
	}
	


	printf("[質問19]\n");
	printf("・他力本願は嫌いである。\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[2]+=1;
	}
	

	printf("[質問20]\n");
	printf("・気に入ったものがあれば徹底的に買い集めたりする\n");
	printf("[y/n] :");scanf(" %c",&a);
	if(a=='y'){
		ketsueki2[3]+=1;
	}
	
	par4(&ketsueki2[0],&ketsuekipar[0]);   //パーセンテージを求める関数へ
	printf("\n\n");

	for(b=0;b<4;b++){    //結果(パーセンテージの表示)
	printf("%s[%4.2f%],",kata[b],ketsuekipar[b]);
	}
	printf("\n");
	
	break;


		 //Mode ②
}else{
		 system("cls");// Dos画面をリセット
		 printf("選択されたモードはありません。1か2を入力してください\n\n");
		 	printf("                              <モード別解説>                \n");
	printf("                         ①血液型別性格判断一覧               \n");
	printf("          インターネット上より収集したデーターベースをそのまま\n");
	printf("          まとめてあります。\n");
	printf("                         ②あなたは何型よりの人?             \n");
	printf("          '①'でのデーターベースを元に、YES、NOの二択の質\n");
	printf("          問形式にしたものです。\n");
	printf("          すべての血液型の質問が不順で表示されます。\n");
	printf("          最終的に、あなたの性格、特徴はそれぞれの血液型の特徴が何パーセント含まれているのかを測定します!。\n");
		 continue;

	}
	}
	return 0;
	}



	void par4(int *ketsueki2,float *ketsuekipar)          //パーセンテージを求める関数
{
	int a,b=0;
	for(a=0;a<=3;a++)
	{
		b+=ketsueki2[a];
	}
	for(a=0;a<4;a++)
	{
		if(b!=0){
		ketsuekipar[a]=((float)ketsueki2[a]/b)*100;
		}else{
			ketsuekipar[a]=0;
		}
	}
}
最後に編集したユーザー kerotan0820 on 2011年1月17日(月) 04:54 [ 編集 1 回目 ]

アバター
ゆーずぃ
記事: 62
登録日時: 14年前

Re: 血液型診断プログラム完成!

投稿記事 by ゆーずぃ » 14年前

お初です。全体の日記から流れてきました。
if文の課題にしては物凄い本気を感じましたw
この血液型の説明が先生によって用意されたものでなかったとしたら…お疲れさまでしたw

ちなみに、printf("~~\n");を乱発するなら、puts("~~");の方が便利でいいですよー。putsだとおけつに改行が自動で入ってくれます。(習ってる範囲で、とか制約付きだったらすみません。)

アバター
GRAM
記事: 164
登録日時: 14年前

Re: 血液型診断プログラム完成!

投稿記事 by GRAM » 14年前

なんというか・・・どの血液型の説明も自分に当てはまってる気がするwなんか結果もおよそ全部25%だったし・・・
そういう自分の血液型は「para-Bombay型」!

・・・もちろん嘘ですw

kerotan0820
記事: 91
登録日時: 14年前

Re: 血液型診断プログラム完成!

投稿記事 by kerotan0820 » 14年前

ゆーずぃさん>>
個人的に出された課題ですがね^^;
特にやらなくてはいけなかった、という課題でもないので勿論文章は指定のものではありません。
あ… これ他のサイトから引用した文章なのですが、URLとか記述したほうがよいのですかね… 

putsは良く目にしてましたが、使った事はありませんでした。改行が自動で入るとは便利ですね… 是非使わせていただきます。

GRAMさん>>
良くありますよねそういうのw 結局根拠無いですからねえ…
私はAとABが33.33%でした。 父親がAB 母親がBなので…ある意味当りです。
para-Bombay型www