ページ 11

C言語初心者です!授業の課題が終わりません!

Posted: 2012年7月24日(火) 11:04
by kachigarasu
授業でちょっとしたゲームを作る課題が出ました。
作ってみたのですが、エラーばっかりでパニックです...
だれかお助けをお願いします。
以下の通りにプログラミングしました。

#include<stdio.h>

int main(void)
{
int p;

do{
int x;
puts("直感!あなたにおすすめのチーム~J1チーム編~");
printf("道にお金が落ちていました。あなたは拾いますか?\n");
printf("1:さっさと拾う 2:周りを確かめてこっそり拾う 3:交番に持っていく\n");
scanf("%d",&x);

switch(x){
case 1 :
int y;
puts("どっち?");
puts("1:ヒトカゲ 2:ミズガメ");
scanf("%d",&y);

switch(y) {
case 1 :
int z;
puts("どっち?");
puts("1:頭 2:力");
scanf("%d",&z);

switch(z) {
case 1 :
int a;
puts("旅行するなら?");
puts("1:ヨーロッパ 2:南米");
scanf("%d",&a);

if(a==1){
puts("お金が大好きで、ヨーロッパに行ってみたいあなたには...浦和レッズ!");
puts("ホームタウン:埼玉県さいたま市");
puts("戦術:考えて走るサッカー。リスクを冒しての攻撃。状況にあわせ守備的になる");
puts("チームカラー:赤");
puts("中心選手:阿部勇樹、原口元気、槙野智章"); break;
}else{
puts("お金が大好きで、南米に行ってみたいあなたには...鹿島アントラーズ!");
puts("ホームタウン:茨城県鹿嶋市");
puts("戦術:ブラジル流の攻撃的コンビネーションサッカー。サイドを変えながらドリブルや、ワンツー、壁パス、オーバーラップで敵の守備陣を崩す。");
puts("チームカラー:赤");
puts("中心選手:小笠原満男、大迫勇也、山村和也"); break;
}
case 2 :
puts("お金が大好きで、力に自信のあるあなたには...名古屋グランパス!");
puts("ホームタウン:愛知県名古屋市");
puts("戦術:個人技主体でサイドを崩していくサッカー");
puts("チームカラー:赤");
puts("中心選手:玉田圭司、永井謙佑、田中マルクス闘莉王"); break;
}
}
case 2 :
int c;
puts("どっち?");
puts("1:つるぎのまい 2:てっぺき");
scanf("%d",&c);

switch(c) {
case 1:
int d;
puts("どっち?");
puts("1:濃い口 2:薄口");
scanf("%d",&d);

if(d==1){
puts("お金が大好きで、S、関東派のあなたには...川崎フロンターレ!");
puts("ホームタウン:神奈川県川崎市");
puts("戦術:パス主体でゲームを支配する。理にかなったサッカー。ボールをとられなきゃ負けない。");
puts("チームカラー:サックスブルー");
puts("中心選手:中村憲剛、稲本潤一"); break;
}else{
puts("お金が大好きで、S、関西派のあなたには...ガンバ大阪!");
puts("ホームタウン:大阪府吹田市");
puts("戦術:ショートパスを繋いで局面を打開していくパス主体のサッカー");
puts("チームカラー:青");
puts("中心選手:遠藤保仁、今野泰幸"); break;
}
case 2:
puts("お金が大好き、保守的なあなたには...横浜Fマリノス!");
puts("ホームタウン:神奈川県横浜市");
puts("戦術:堅守のリアクションサッカー。中村俊輔が試合を組み立てる。");
puts("チームカラー:青");
puts("中心選手:中村俊輔、中澤佑二、斉藤学"); break;
}
}
}

break;

case 2 :
int f;
puts("太陽が昇ってくるのは?");
puts("1:東 2:西");
scanf("%d",&f);

switch(f) {
case 1:
int g;
puts("どっち?");
puts("1:つるぎのまい 2:てっぺき");
scanf("%d",&g);

switch(g) {
case 1:
int h;
puts("旅行するなら?");
puts("1:ヨーロッパ 2:南米");
scanf("%d",&h);

if(h==1){
puts("やっぱりお金が好きで、S、ヨーロッパに行ってみたいあなたには...FC東京!");
puts("ホームタウン:東京都");
puts("戦術:少ないタッチでボール繋ぐ。くさびを多用、スペースを狙うポゼッションサッカー。");
puts("チームカラー:青");
puts("中心選手:権田修一、徳永悠平、ルーカス"); break;
}else{
puts("やっぱりお金が好きで、S、南米に行ってみたいあなたには...柏レイソル!");
puts("ホームタウン:千葉県柏市");
puts("戦術:最終ラインからのビルドアップ。ショートパスをつなぐブラジル流のクリエイティブなサッカー。全体のバランス重視。");
puts("チームカラー:イエロー");
puts("中心選手:レアンドロ・ドミンゲス、ジョルジ・ワグネル、田中順也"); break;
}
case 2:
puts("やっぱりお金が好きで、保守的なあなたには...大宮アルディージャ!");
puts("ホームタウン:埼玉県さいたま市");
puts("戦術:守備的。攻守の素早い切り替え、積極的なサイドバックの攻撃参加をベースとしたサイドアタックのアグレッシブサッカー。");
puts("チームカラー:オレンジ");
puts("中心選手:東慶悟、カルリーニョス"); break;
}
}
case 2:
int j;
puts("どっち?");
puts("1:モクセイ 2:モミジ");
scanf("%d",&j);

switch(g) {
case 1:
int k;
puts("どっち?");
puts("1:久保田利伸 2:長澤まさみ");
scanf("%d",&k);

if (k==1){
puts("やっぱりお金が好きで、静岡県中部派のあなたには...清水エスパルス!");
puts("ホームタウン:静岡県静岡市");
puts("戦術:決まったポジションでパスを素早く回し相手のスペースをついて崩すオランダ流攻撃的サッカー。個人のスキルが必要。");
puts("チームカラー:オレンジ");
puts("中心選手:小野伸二、村松大輔、高木俊幸"); break;
}else{
puts("やっぱりお金が好きで、静岡県西部派のあなたには...ジュビロ磐田!");
puts("ホームタウン:静岡県磐田市");
puts("戦術:高い位置からボールを奪ってからの速攻。または、パスを丁寧に繋いでの攻撃。");
puts("チームカラー:サックスブルー");
puts("中心選手:前田遼一、川口能活、駒野友一");
puts("ちなみに長澤まさみのお父さんはジュビロの初代監督でした!"); break;
}
case 2:
puts("やっぱりお金が好きで、広島県派のあなたには...サンフレッチェ広島!");
puts("ホームタウン:広島県広島市");
puts("戦術:中盤の数を増やして数的有利から相手を崩していく攻撃的サッカー。");
puts("チームカラー:紫");
puts("中心選手:佐藤寿人、西川周作、森脇良太"); break;
}
}

break;

case 3 :
int m;
puts("太陽が昇ってくるのは");
puts("1:東 2:西");
scanf("%d",&m);

switch(m){
case 1:
int n;
puts("お菓子は好きですか?");
puts("1:はい 2:そこまで");
scanf("%d",&n);

switch(n){
case 1:int o;
puts("どっち?");
puts("1:白い恋人 2:ハッピーターン");
scanf("%d",&o);

if (c == 1){
puts("お金がすべてじゃない。白い恋人が好きなあなたには...コンサドーレ札幌!");
puts("ホームタウン:北海道札幌市");
puts("戦術:前線からの守備を重視し、相手の長所を消すきめ細かな戦術");
puts("チームカラー:赤");
puts("中心選手:中山雅史、前田俊介、内村圭宏"); break;
}else{
puts("お金がすべてじゃない。ハッピーターンが好きのあなたには...アルビレックス新潟!");
puts("ホームタウン:新潟県新潟市");
puts("戦術:前線から積極的にプレスを掛け、スペースを見つけて相手より早く動き出す組織的かつ攻撃的なアクションサッカー。");
puts("チームカラー:オレンジ");
puts("中心選手:矢野貴章、鈴木大輔、東口順昭"); break;
}

case 2:
puts("お金がすべてじゃない。お菓子もすべてじゃないあなたには...ベガルタ仙台!");
puts("ホームタウン:宮城県仙台市");
puts("戦術:全員守備、堅守速攻、後方からロングボールを放り込みポストプレーにMF陣が絡む。");
puts("チームカラー:ゴールド");
puts("中心選手:梁勇基、太田吉彰、赤嶺真吾"); break;
}
} break;

case 2:
int r;
puts("どれですか?");
puts("1:サクラ 2:牛 3:カササギ");
scanf("%d",&r);

switch(r){
case 1:
puts("お金がすべてじゃない。サクラが好きなあなたには...セレッソ大阪!");
puts("ホームタウン:大阪府大阪市");
puts("戦術:ドリブルと自由なポジションチェンジを駆使したブラジル流攻撃的サッカー。");
puts("チームカラー:ピンク");
puts("中心選手:扇原貴宏、山口蛍、柿谷曜一朗"); break;

case 2:
puts("お金がすべてじゃない。牛が好きなあなたには...ヴィッセル神戸!");
puts("ホームタウン:兵庫県神戸市");
puts("戦術:守備的布陣で、高い位置で相手のミスを誘い、少ない人数で攻撃する戦術。ローリスク、ローリターン。");
puts("チームカラー:クリムゾンレッド");
puts("中心選手:大久保嘉人、伊野波雅彦、野沢拓也"); break;

case 3:
puts("お金がすべてじゃない。カササギが好きなあなたには...サガン鳥栖!");
puts("ホームタウン:佐賀県鳥栖市");
puts("戦術:運動量が特徴。前線からの果敢なプレス。カウンターとポゼッションしながらのサイド攻撃を織り交ぜたサッカー。");
puts("チームカラー:ブルー");
puts("中心選手:豊田陽平、水沼宏太、藤田直之"); break;

} break;
}
}
puts("もっかいやる?");
puts("[Yes…1/No…2]");
scanf("%d",&p);
}while(p == 1);

return 0 ;
}

Re: C言語初心者です!授業の課題が終わりません!

Posted: 2012年7月24日(火) 11:12
by kachigarasu
[quote="kachigarasu"]授業でちょっとしたゲームを作る課題が出ました。
作ってみたのですが、エラーばっかりでパニックです...
だれかお助けをお願いします。
以下の通りにプログラミングしました。

コード:


#include<stdio.h>

int main(void)
{
	int p;
	
	do{
		int x;
		puts("直感!あなたにおすすめのチーム~J1チーム編~");
		printf("道にお金が落ちていました。あなたは拾いますか?\n");
		printf("1:さっさと拾う 2:周りを確かめてこっそり拾う 3:交番に持っていく\n");
		scanf("%d",&x);
		
			switch(x){
				case 1 :
					int y;
					puts("どっち?");
					puts("1:ヒトカゲ 2:ミズガメ");
					scanf("%d",&y);
				
					switch(y) {
						case 1 :
							int z;
							puts("どっち?");
							puts("1:頭 2:力");
							scanf("%d",&z);
						
							switch(z) {
								case 1 :
									int a;
									puts("旅行するなら?");
									puts("1:ヨーロッパ 2:南米");
									scanf("%d",&a);
									
									if(a==1){
										puts("お金が大好きで、ヨーロッパに行ってみたいあなたには...浦和レッズ!");
										puts("ホームタウン:埼玉県さいたま市");
										puts("戦術:考えて走るサッカー。リスクを冒しての攻撃。状況にあわせ守備的になる");
										puts("チームカラー:赤");
										puts("中心選手:阿部勇樹、原口元気、槙野智章");	break;
									}else{
										puts("お金が大好きで、南米に行ってみたいあなたには...鹿島アントラーズ!");
										puts("ホームタウン:茨城県鹿嶋市");
										puts("戦術:ブラジル流の攻撃的コンビネーションサッカー。サイドを変えながらドリブルや、ワンツー、壁パス、オーバーラップで敵の守備陣を崩す。");
										puts("チームカラー:赤");
										puts("中心選手:小笠原満男、大迫勇也、山村和也");	break;
									}
								case 2 :
									puts("お金が大好きで、力に自信のあるあなたには...名古屋グランパス!");
									puts("ホームタウン:愛知県名古屋市");
									puts("戦術:個人技主体でサイドを崩していくサッカー");
									puts("チームカラー:赤");
									puts("中心選手:玉田圭司、永井謙佑、田中マルクス闘莉王");	break;
									}
							}
						case 2 :
							int c;
							puts("どっち?");
							puts("1:つるぎのまい 2:てっぺき");
							scanf("%d",&c);
						
							switch(c) {
								case 1:
									int d;
									puts("どっち?");
									puts("1:濃い口 2:薄口");
									scanf("%d",&d);
									
									if(d==1){
										puts("お金が大好きで、S、関東派のあなたには...川崎フロンターレ!");
										puts("ホームタウン:神奈川県川崎市");
										puts("戦術:パス主体でゲームを支配する。理にかなったサッカー。ボールをとられなきゃ負けない。");
										puts("チームカラー:サックスブルー");
										puts("中心選手:中村憲剛、稲本潤一");	break;
									}else{
										puts("お金が大好きで、S、関西派のあなたには...ガンバ大阪!");
										puts("ホームタウン:大阪府吹田市");
										puts("戦術:ショートパスを繋いで局面を打開していくパス主体のサッカー");
										puts("チームカラー:青");
										puts("中心選手:遠藤保仁、今野泰幸");	break;
									}
								case 2:
									puts("お金が大好き、保守的なあなたには...横浜Fマリノス!");
									puts("ホームタウン:神奈川県横浜市");
									puts("戦術:堅守のリアクションサッカー。中村俊輔が試合を組み立てる。");
									puts("チームカラー:青");
									puts("中心選手:中村俊輔、中澤佑二、斉藤学");	break;
									}
							}
					}
					
					break;
					
				case 2 :
					int f;
					puts("太陽が昇ってくるのは?");
					puts("1:東 2:西");
					scanf("%d",&f);
				
					switch(f) {
						case 1:
							int g;
							puts("どっち?");
							puts("1:つるぎのまい 2:てっぺき");
							scanf("%d",&g);
							
							switch(g) {
								case 1:
									int h;
									puts("旅行するなら?");
									puts("1:ヨーロッパ 2:南米");
									scanf("%d",&h);
									
									if(h==1){
										puts("やっぱりお金が好きで、S、ヨーロッパに行ってみたいあなたには...FC東京!");
										puts("ホームタウン:東京都");
										puts("戦術:少ないタッチでボール繋ぐ。くさびを多用、スペースを狙うポゼッションサッカー。");
										puts("チームカラー:青");
										puts("中心選手:権田修一、徳永悠平、ルーカス");	break;
									}else{
										puts("やっぱりお金が好きで、S、南米に行ってみたいあなたには...柏レイソル!");
										puts("ホームタウン:千葉県柏市");
										puts("戦術:最終ラインからのビルドアップ。ショートパスをつなぐブラジル流のクリエイティブなサッカー。全体のバランス重視。");
										puts("チームカラー:イエロー");
										puts("中心選手:レアンドロ・ドミンゲス、ジョルジ・ワグネル、田中順也");	break;
									}
								case 2:
									puts("やっぱりお金が好きで、保守的なあなたには...大宮アルディージャ!");
									puts("ホームタウン:埼玉県さいたま市");
									puts("戦術:守備的。攻守の素早い切り替え、積極的なサイドバックの攻撃参加をベースとしたサイドアタックのアグレッシブサッカー。");
									puts("チームカラー:オレンジ");
									puts("中心選手:東慶悟、カルリーニョス");	break;
									}
							}
						case 2:
							int j;
							puts("どっち?");
							puts("1:モクセイ 2:モミジ");
							scanf("%d",&j);
							
							switch(g) {
								case 1:
									int k;
									puts("どっち?");
									puts("1:久保田利伸 2:長澤まさみ");
									scanf("%d",&k);
									
									if (k==1){
										puts("やっぱりお金が好きで、静岡県中部派のあなたには...清水エスパルス!");
										puts("ホームタウン:静岡県静岡市");
										puts("戦術:決まったポジションでパスを素早く回し相手のスペースをついて崩すオランダ流攻撃的サッカー。個人のスキルが必要。");
										puts("チームカラー:オレンジ");
										puts("中心選手:小野伸二、村松大輔、高木俊幸");	break;
									}else{
										puts("やっぱりお金が好きで、静岡県西部派のあなたには...ジュビロ磐田!");
										puts("ホームタウン:静岡県磐田市");
										puts("戦術:高い位置からボールを奪ってからの速攻。または、パスを丁寧に繋いでの攻撃。");
										puts("チームカラー:サックスブルー");
										puts("中心選手:前田遼一、川口能活、駒野友一");
										puts("ちなみに長澤まさみのお父さんはジュビロの初代監督でした!"); break;
									}
								case 2:
									puts("やっぱりお金が好きで、広島県派のあなたには...サンフレッチェ広島!");
									puts("ホームタウン:広島県広島市");
									puts("戦術:中盤の数を増やして数的有利から相手を崩していく攻撃的サッカー。");
									puts("チームカラー:紫");
									puts("中心選手:佐藤寿人、西川周作、森脇良太");	break;
							}
					}
					
					break;
					
				case 3 :
					int m;
					puts("太陽が昇ってくるのは");
					puts("1:東 2:西");
					scanf("%d",&m);
						
					switch(m){
						case 1:
							int n;
							puts("お菓子は好きですか?");	
							puts("1:はい 2:そこまで");
							scanf("%d",&n);
							
							switch(n){
								case 1:int o;
								puts("どっち?");
								puts("1:白い恋人 2:ハッピーターン");
								scanf("%d",&o);
							
								if (c == 1){
									puts("お金がすべてじゃない。白い恋人が好きなあなたには...コンサドーレ札幌!");
									puts("ホームタウン:北海道札幌市");
									puts("戦術:前線からの守備を重視し、相手の長所を消すきめ細かな戦術");
									puts("チームカラー:赤");
									puts("中心選手:中山雅史、前田俊介、内村圭宏");	break;
								}else{
									puts("お金がすべてじゃない。ハッピーターンが好きのあなたには...アルビレックス新潟!");
									puts("ホームタウン:新潟県新潟市");
									puts("戦術:前線から積極的にプレスを掛け、スペースを見つけて相手より早く動き出す組織的かつ攻撃的なアクションサッカー。");
									puts("チームカラー:オレンジ");
									puts("中心選手:矢野貴章、鈴木大輔、東口順昭");	break;
								}
								
								case 2:
									puts("お金がすべてじゃない。お菓子もすべてじゃないあなたには...ベガルタ仙台!");
									puts("ホームタウン:宮城県仙台市");
									puts("戦術:全員守備、堅守速攻、後方からロングボールを放り込みポストプレーにMF陣が絡む。");
									puts("チームカラー:ゴールド");
									puts("中心選手:梁勇基、太田吉彰、赤嶺真吾");	break;
								}
							}	break;
								
						case 2:
							int r;
							puts("どれですか?");
							puts("1:サクラ 2:牛 3:カササギ");
							scanf("%d",&r);
							
							switch(r){
								case 1:
									puts("お金がすべてじゃない。サクラが好きなあなたには...セレッソ大阪!");
									puts("ホームタウン:大阪府大阪市");
									puts("戦術:ドリブルと自由なポジションチェンジを駆使したブラジル流攻撃的サッカー。");
									puts("チームカラー:ピンク");
									puts("中心選手:扇原貴宏、山口蛍、柿谷曜一朗");	break;
								
								case 2:
									puts("お金がすべてじゃない。牛が好きなあなたには...ヴィッセル神戸!");
									puts("ホームタウン:兵庫県神戸市");
									puts("戦術:守備的布陣で、高い位置で相手のミスを誘い、少ない人数で攻撃する戦術。ローリスク、ローリターン。");
									puts("チームカラー:クリムゾンレッド");
									puts("中心選手:大久保嘉人、伊野波雅彦、野沢拓也");	break;
								
								case 3:
									puts("お金がすべてじゃない。カササギが好きなあなたには...サガン鳥栖!");
									puts("ホームタウン:佐賀県鳥栖市");
									puts("戦術:運動量が特徴。前線からの果敢なプレス。カウンターとポゼッションしながらのサイド攻撃を織り交ぜたサッカー。");
									puts("チームカラー:ブルー");
									puts("中心選手:豊田陽平、水沼宏太、藤田直之");	break;
								
							}	break;
					}
			}
			puts("もっかいやる?");
			puts("[Yes…1/No…2]");
			scanf("%d",&p);
	}while(p == 1);

	return 0 ;
}

Re: C言語初心者です!授業の課題が終わりません!

Posted: 2012年7月24日(火) 12:26
by non
プログラムを読む気がしません。
また、こんなプログラムの作り方は、したくありません。
課題を正確に示してください。
それから、どこまで習っているのか教えてください。
特に関数は習っているのか?
文字列の配列は習っているのか?

Re: C言語初心者です!授業の課題が終わりません!

Posted: 2012年7月24日(火) 12:37
by softya(ソフト屋)
とりあえず文法違反な事を説明します。
・switch文の直下で変数宣言してはいけません。
・プログラムが長すぎて{}の対応を間違っています。インデントが適当なので、まずこれを正確に直して下さい。
そうすれば間違いを見つけやすくなります。
・{}までの間が長いのでブロックの終わりにどの命令の}なのか説明が欲しいです。}/*siwtch(x)*/ など。
・上の問題の解消に出来れば関数に分けることをおすすめします。
以上を改善すればエラーが出る確率はぐんと減ります。

Re: C言語初心者です!授業の課題が終わりません!

Posted: 2012年7月24日(火) 12:44
by Ryo
いきなり複数の質問・分岐をつくらず
まずは、一問だけのプログラムを目指してみてるのも手です。