アットウィキロゴ
ProgramingTips
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

ProgramingTips

配列3

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

C言語>配列3


今回説明するのは二次元配列です。

配列イメージ

|a[0][0]|a[0][1]|…|
|a[1][0]|a[1][1]|…|

使用方法

型名 変数[要素名][要素名] =
{
	…,
};

例文

//================================================
//include
//================================================
#include <stdio.h>
//================================================
//define
//================================================
#define MAP_WIDTH  5
#define MAP_HEIGHT 5

//================================================
//enum
//================================================
[[enum]]
{
	MAP_FLAT,
	MAP_SEA,
	MAP_MOUNT,
	MAP_FLOW,
	MAP_HILL,
};

//================================================
//メイン関数
//================================================
int main(void)
{
	int i = 0;
	int j = 0;

	/*マップデータ*/
	int MapData[MAP_HEIGHT][MAP_WIDTH] =
	{
		0, 1, 2, 3, 4,
		1, 2, 3, 4, 0,
		2, 3, 4, 0, 1,
		3, 4, 0, 1, 2,
		4, 0, 1, 2, 3,
	};
	
	for(i = 0;i < MAP_HEIGHT;i++)
	{
		for(j = 0;j < MAP_WIDTH;j++)
		{
			switch(MapData[i][j])
			{
				case MAP_FLAT:
				{
					[[printf]]("平");
					break;
				}
				
				case MAP_SEA:
				{
					printf("海");
					break;
				}
				
				case MAP_MOUNT:
				{
					printf("山");
					break;
				}
				
				case MAP_FLOW:
				{
					printf("川");
					break;
				}
				
				case MAP_HILL:
				{
					printf("丘");
					break;
				}
			}
		}
		
		printf("\n");
	}
	
	return 0;
	
}

実行結果


解説

int MapData[MAP_HEIGHT][MAP_WIDTH] =
{
	0, 1, 2, 3, 4,
	1, 2, 3, 4, 0,
	2, 3, 4, 0, 1,
	3, 4, 0, 1, 2,
	4, 0, 1, 2, 3,
};
二次元配列の初期化です。
この場合
MapData[0][0] = 上1左1の0,
MapData[0][1] = 上1左2の1,
	…
MapData[1][0] = 上2左1の1,
MapData[1][1] = 上2左2の2,
	…
という風に対応しています。

switch(MapData[i][j])
{
	case MAP_FLAT:
	{
		printf("平");
		break;
	}
				
	case MAP_SEA:
	{
		printf("海");
		break;
	}
				
	case MAP_MOUNT:
	{
		printf("山");
		break;
	}
				
	case MAP_FLOW:
	{
		printf("川");
		break;
	}
				
	case MAP_HILL:
	{
		printf("丘");
		break;
	}
}
マップデータの数値によって、
表示させる文字を変えています。
MAP_FLAT(0)だったら、"平"という文字を、
MAP_SEA(1)だったら、"海"という文字を
…と言ったように対応しています。

補足

二次元配列以上もありますが、なるべく使わないように
しましょう。

<C言語に戻る

タグ:

+ タグ編集
  • タグ:
添付ファイル
記事メニュー
最近更新されたスレッド
ウィキ募集バナー