iT邦幫忙

0

C語言 數組

請教各位大大~~
我用數組要寫出這樣的程式:
A B 。 。 。 讓他運作到Z停止,或者如左表卡住不能動才停,
。 C J I 。
。 D K H 。
。 E F G 。
。 。 。 。 。
以下是我的原始碼:
但一直無法正常運作,也不知到底要如何修改(修改多次),煩請大大的協助了><"~~

#define AUTO_ROW 10
#define AUTO_COLUMN 10

int main(int argc,char *argv[]){
	char range[AUTO_ROW+2][AUTO_COLUMN+2]={false};  
	bool check[AUTO_ROW+2][AUTO_COLUMN+2]={true};
	int row=1,colum=1,way;
	char t='A';
	for(;row&lt;AUTO_ROW+1;row++){                  
		for(;colum&lt;AUTO_COLUMN+1;colum++){
			check[row][colum]=false;
		}
	}
	row=1;
	colum=1;

	srand((unsigned)time(NULL));
	range[row][colum]=t;
	
	for(;t&lt;'Z';){
		way=rand()%4;
		switch (way){
		case(0):row--; break;
		case(1):colum++; break;
		case(2):row++; break;
		default:colum--;
			break;
		}
		if(!check[row][colum]){
			range[row][colum]=++t;
			check[row][colum]=true;
		}else{
			switch (way){
			case(0):row++; break;
			case(1):colum--; break;
			case(2):row--; break;
			default:colum++;
				break;
			}
		}
	}


	for(row=1;row&lt;AUTO_ROW;row++){                  
		for(colum=1;colum&lt;AUTO_COLUMN;colum++){
			range[row][colum]==false?printf(" ."):printf("%2c",range[row][colum]);
		}
		printf("\n");
	}
	getchar();
}
總裁 iT邦好手 1 級 ‧ 2013-07-12 09:13:38 檢舉
幾個問題
1.ARRAY為什麼不從0開始用??
2.妳讓字母的位置亂跳
2.1位置可能會變成負的
2.2位置可能會重複
好好想一想,加油!!!
因為打算設邊界來判斷
後來終於解開來了=口=~~~

一開始設的check[AUTO_ROW][AUTO_COLUMN]={true}
我以為他會把全部設回true 然後我在把中間那塊設false@@
結果他只有把[0][0]設為true="=(解開數字突然消失的問題了(汗)
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

8
ezdoc
iT邦新手 2 級 ‧ 2013-07-12 11:24:20
最佳解答

提示幾個點,供參考

  1. 起點(t='A') 時沒有設定 check[1][1]= true
  2. 陣列邊界沒有判斷
  3. 沒有處理到卡住要停止的狀況

完成了><"~~~
一直沒有想到邊界的問題....
當初設

&lt;pre class="c" name="code">check[AUTO_ROW+2][AUTO_COLUMN+2]={true}

以為說會全部變成true 再重更新裡面的值變成false 結果只有[0][0]是true="=
難怪有些值會消失.....

然後內容再多增列一個判斷四周皆為true>跳出 就ok了~~

我要發表回答

立即登入回答