二元配列について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
doss

二元配列について

#1

投稿記事 by doss » 12年前

二元配列を使用して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();
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 二元配列について

#2

投稿記事 by softya(ソフト屋) » 12年前

if( a[j] = 0 ) 比較ではなく代入文になっています。
switch~caseを使えば防げたバグですよ。

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

【補足の補足】
あっswitchでもbreak;を忘れると同じ様なバグにはまるので、デバッガで確認するのが確実な方法です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

doss

Re: 二元配列について

#3

投稿記事 by doss » 12年前

softyaさんどうもありがとうございました。見事に解決しました。
やはり、一定の期間離れた言語はある程度基礎を見直した方がいいですね。

閉鎖

“C言語何でも質問掲示板” へ戻る