[問題]在陣列中 再設一個值??

看板C_and_CPP (C/C++)作者 (壘哥)時間14年前 (2011/08/26 13:49), 編輯推噓-1(0114)
留言15則, 7人參與, 最新討論串1/1
不好意思 又來請教各位 我的陣列一樣是 4 8 4 0 0 0 3 7 4 0 5 4 0 7 3 0 0 5 8 1 7 0 0 1 0 假如我現在想要讀取map[x][y]=w 它上下左右的值 例如 [2][3]=7 我要讀取它上下左右的值 但值又不可為0 像 4 5 3 4 這樣 我是這樣寫 以"上"為例 int map_up ; for (int u=0 ; u<=99 ; u++) { map[x][y] = map[3-u][2] ; if (map[x][y] != 0) map_up = map[x][y] ; break ; } cout << map_up << endl ; 但是寫出來卻出現錯誤 完全不能跑 是哪裡有漏寫或寫錯嗎?? 請各位幫我解惑一下 感謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.110.126

08/26 13:52, , 1F
會不會是超界??? x-u必須要大於0
08/26 13:52, 1F

08/26 14:31, , 2F
這if()break的位置不對呀
08/26 14:31, 2F

08/26 14:31, , 3F
你找到一格非零就馬上跳出 找到的值沒給map_up
08/26 14:31, 3F

08/26 14:46, , 4F
請問 K大 請問我的位置是哪裡錯了??
08/26 14:46, 4F

08/26 14:48, , 5F
找到的值先給map_up 再跳出
08/26 14:48, 5F
K大 是改成這樣嗎?? 我現在暫定給他一個[3][2]的值 進去做 可是卻出現 存取錯誤的訊息 請問這是哪裡出了問題?? ※ 編輯: terrysu2000 來自: 140.134.72.115 (08/26 15:05)

08/26 15:10, , 6F
有把if()要跑的部份用{}包起來嗎?
08/26 15:10, 6F
是這樣嗎 int map_up ; for (int u=0 ; u<=99 ; u++) { map[x][y] = map[3-u][2] ; if (map[x][y] != 0) { map_up = map[x][y] ; break ; } } cout << map_up << endl ; 還是這樣 int map_up ; for (int u=0 ; u<=99 ; u++) { map[x][y] = map[3-u][2] ; if (map[x][y] != 0) { map_up = map[x][y] ; } break ; } cout << map_up << endl ; 我這2種都試過 結果還是一樣... 出現"於 0x004117e7 的 彩磚問題.exe 中發生未處理的例外狀況: 0xC0000005: 寫入位置 0xfdfdfe51 時發生存取違規" ※ 編輯: terrysu2000 來自: 140.134.72.115 (08/26 15:18)

08/26 15:22, , 7F
顯然是存取越界了
08/26 15:22, 7F

08/26 15:23, , 8F
我猜是x,y超界了? 或者問題跟本不在這裡?
08/26 15:23, 8F

08/26 15:27, , 9F
所以是我迴圈出了問題摟 不然正常來說應該是會讀到
08/26 15:27, 9F

08/26 15:28, , 10F
[2][2] = 3 才對
08/26 15:28, 10F

08/26 15:29, , 11F
[1][1]才是3喔
08/26 15:29, 11F

08/26 15:55, , 12F
你先想想看當u==4會發生什麼事...
08/26 15:55, 12F

08/26 16:58, , 13F
map[-1][2];
08/26 16:58, 13F

08/26 18:27, , 14F
上一篇砍光光是怎麼回事?
08/26 18:27, 14F

08/26 18:27, , 15F
你會被水桶。
08/26 18:27, 15F
文章代碼(AID): #1ELpFuLK (C_and_CPP)
文章代碼(AID): #1ELpFuLK (C_and_CPP)