2015-06-14 43 views
0

给定平面中的m个点。通过键盘输入的xy坐标数必须为 。如何从xy中找到这个坐标?具有二维动态数组。查找具有二维动态数组的点C

现在我有这个,但它不工作:

int **enterPoints (int m) { 
    int i, **points; 
    scanf("%d",&m); 
    points = (int **)malloc(m*sizeof(int *)); 
    if (points != NULL) { 
     for (i=0; i<m; i++) { 
      *(points+i) = (int *)malloc(m*sizeof(int)); 
      if (*(points+i)==NULL) 
       break; 
     } 
     { 
      printf("enter %d points coord X and Y:", i+1); 
      scanf("%d %d", &*(*(points+i)+0), &*(*(points+i)+1)); 
      *(*(points+i)+2)=0; 
     } 
    } 
    free(points); 
    return points; 
} 
+2

什么是不工作?它不是在编译?它给出了错误的结果吗?你的问题是什么? “如何从xy找到这个坐标?”是什么意思? – dingalapadum

+0

一般来说,forumla是'Value = *(ArrayStartingPoint +((x * y.Length + y)* sizeof(array type)))' –

+0

感谢一个公式,就像我希望使用的那样。我无法输入数字为x和y。现在我无法运行程序...并不明白为什么。它不要做任何事情,我点击运行和构建,没有任何反应。我在编程...在编程... –

回答

0

试试这个

#include <stdio.h> 
#include <stdlib.h> 

int **enterPoints (int m){ 
    int i, **points; 
    //scanf("%d",&m);//already get as argument 
    if(m<=0) 
     return NULL; 
    points = (int**)malloc(m*sizeof(int*)); 
    if (points != NULL){ 
     for (i=0; i<m; i++){ 
      points[i] = (int*)malloc(2*sizeof(int)); 
      if(points[i]!=NULL){ 
       printf("enter %d points coord X and Y:", i+1);fflush(stdout); 
       scanf("%d %d", &points[i][0],&points[i][1]); 
      } 
     } 
    } 
    //free(points);//free'd regions is unusable 
    return points; 
} 

int main(void){ 
    //test code 
    int i, m, **points; 
    //scanf("%d", &m); 
    m = 3; 
    points = enterPoints(m); 
    for(i = 0; i < m; ++i){ 
     printf("(%d, %d)\n", points[i][0], points[i][1]); 
     free(points[i]); 
    } 
    free(points); 
    return 0; 
}