2017-04-26 69 views
0

hello to stackoverflow community。這將是我在這裏尋找幫助後的第一篇文章,我掃描了本網站的很多頁面,還有更多網站試圖弄清楚我的代碼有什麼問題。一個小背景 - 這是在c課程介紹中給我的一個任務。我對它和任何其他編程語言沒有深入的瞭解,所以對我來說很簡單。我需要編寫一個程序,使用我寫的兩個函數來查找二維數組中的某個單元格與其右側的鄰居之間的總距離。我還需要計算比所有鄰居都大的元素數量。這是我拍這個:2d數組錯誤 - 使指針指向整數而不投射

1)#include <stdio.h> 
2)#define N 4 
3)int is_strong(int matrix[][N], int row, int column); 
4)int Space_rank(int matrix[][N], int row, int column); 
5)int My_abs(int); 
6)int main() 
7){ 
8) int matrix[N][N]; 
9) printf("Please enter a matrix: \n"); 
10) for(int i=0; i<N; i++) 
11) { 
12) for(int j=0; j<N; j++) scanf("%d", &matrix[i][j]); 
13) } 
14) int Strong_Amount=0, Total_Space=0; 
15) for(int i=0; i<N; i++) 
16) { 
17) for(int j=0; j<N; j++) 
18) { 
19)  Strong_Amount+=is_strong(matrix[N][N], i, j); 
20)  Total_Space+=Space_rank(matrix[N][N], i, j); 
21) }} 
22) printf("Strong elements: %d\n Space rank: %d\n", Strong_Amount,Total_Space); 
23) return 0; 
24)} 
25) 
26)int is_strong (int mat[N][N], int row, int column) 
27){ 
28) int Below, Above, Right, Left; 
29) int Subject=mat[row][column]; 
30) Below=mat[row+1][column]; 
31) Above=(row-1!=0)*mat[row-1][column]; 
32) Right=mat[row][column+1]; 
33) Left=(column-1!=0)*mat[row][column-1]; 
34) int Answer=(Subject>Above && Subject>Below && Subject>Right && Subject>Left); 
35) return Answer; 
36)} 
37) 
38)int Space_rank(int mat[N][N], int row, int column) 
39){ 
40) int Subject=mat[row][column], Right; 
41) Right=mat[row][column+1]; 
42) int Space=My_abs(Subject-Right); 
43) return Space; 
44)} 
45) 
46)int My_abs(int v) 
47){ 
48) return v*((v>0)-(v<0)); 
49)} 

我收到一個錯誤說「錯誤:的‘is_strong’傳遞參數1,使指針從整數,未作類型轉換」第19行。我認爲我的問題是兩種功能相互衝突的類型,但我無法找到我做錯了什麼。 任何幫助/提示將理解

+1

is_strong需要一個二維數組,你給它一個int。 – yoones

+0

確實..讀了關於_declaring_數組(參數或常規變量)和_accessing_數組之間的區別。 – Lundin

+0

謝謝你們倆。我正在閱讀有關聲明和訪問數組之間的差異 – MushroomDiH

回答

0

這是你如何通過你的陣列的功能:

19)  Strong_Amount+=is_strong(matrix, i, j); 
20)  Total_Space+=Space_rank(matrix, i, j); 
+0

非常感謝您的快速回答。代碼有效! – MushroomDiH

+0

在這種情況下,您可以豎起大拇指並將答案標記爲正確;) –