ページ 11

二元配列について

Posted: 2014年3月27日(木) 19:48
by doss
二元配列を使用してMAPを文字により表示したいと思い以下のコードを書いたのですが、表示結果が
土海山
土海山
土海山
土海山
土海山
となってしまうのです。
おそらくケアレスミスだと思うのですが、何時間も悩み結局わかりませんでした。
指摘をお願いしたいです。

コード:

#include <stdio.h>
int main(){
	int a[5][5] = {{3,3,3,3,3},
		            {3,2,1,2,3},
			    {3,1,0,1,3},
			    {3,2,1,2,3},
		    	    {3,3,3,3,3}};
	for(int i=0; i<5; i++){
		for(int j=0; j<5; j++){
			if( a[i][j] = 0 )
				printf("草");
			if( a[i][j] = 1 )
				printf("土");
			if( a[i][j] = 2 )
				printf("海");
			if( a[i][j] = 3 )
				printf("山");
			if( j = 4 )
		        	printf("\n");
		}
	}	
	getchar();
}

Re: 二元配列について

Posted: 2014年3月27日(木) 20:03
by softya(ソフト屋)
if( a[j] = 0 ) 比較ではなく代入文になっています。
switch~caseを使えば防げたバグですよ。

【補足】
あとデバッガのステップ実行を使ってもらうといち早く気づけたかもしれません。

【補足の補足】
あっswitchでもbreak;を忘れると同じ様なバグにはまるので、デバッガで確認するのが確実な方法です。

Re: 二元配列について

Posted: 2014年3月27日(木) 20:53
by doss
softyaさんどうもありがとうございました。見事に解決しました。
やはり、一定の期間離れた言語はある程度基礎を見直した方がいいですね。