好吧,看来我的问题写得不够好,所以让我们再做一次:
我正在尝试编写一个函数,该函数将接受一个多维数组 int 和另一个 int 参数:
int ListNum( int tab[][], int n).
这个函数的目标是获取所述数组并提取第一行并返回其元素的列表,不重复,就像您猜到的“int tab [][]”是我们的数组,“int n”是一行的大小,我只需要提取数组的第一行,所以我猜这就是我的参数中需要的所有信息。 ..
这是它应该如何工作的示例:这是我们的数组 ->
选项卡[7][2]:
| 1 | 3 | 1 | 2 | 0 | 2 | 2 |
| 2 | 1 | 1 | 1 | 0 | 2 | 3 |
结果将位于一个新数组中,如下所示: | 1 | 3 | 2 | 0 |
现在我的问题是我不太擅长编码,我大概知道我应该做什么,但我仍然无法找到正确的解决方案。这是我到目前为止所做的:
int listNum(int tab[][], int n){
int i, j, v=0, temp, *x;
x=malloc(n*sizeof(int));
if(x==NULL){
printf("Error allocation memory !\n");
return -1;
}
x[0]=tab[0][0];
for(i=0;i<n;i++){
temp=tab[i][0];
for(j=0;j<n;j++){
if (temp==x[j]){
i++;
break;
}
}
x[v+1]=tab[i][0];
}
return x;
}
但是,是的,这段代码有各种各样的错误,但我不知道如何修复它,所以真的......任何帮助将不胜感激!
最佳答案
虽然我没有得到你的问题..但是我的理解是“你只需要打印(?)多维数组的第一行...值不应该重复...”
你没有告诉你是从用户那里读取MDarray还是从文件中读取MDarray???
如果每次都是来自用户..不要在第一个地方重复它...在一行中仅存储一个值一次。并打印一个简单的[0][i]。
如果来自文件......这里是代码......
firstline()
{
for(i=0;i<n;i++) if(a[0][i]!='\O')
{
printf("\t%c",a[0][i];
for(j=i;j<n;j++)
if(a[0][i]==a[0][j])
a[0][j]= '\0' ;
}
}
如果我误解了这个问题...请澄清...
PS:我不会传递任何参数,假设所有参数都已全局声明***
更新
是的,明白了...尝试上面的代码...但是在您的代码中:
x [ 0 ] = t a b [ 0 ] [ 0 ] ;
f o r ( i = 0 ; i < n ; i + + )
{ t emp = t a b [ i ] [ 0 ] ; /* Ti0 is the
column... it should be T[0][i] for 1st row*/
f o r ( j = 0 ; j < n ; j + + )
{ i f ( t emp = = x [ j ] )
{ i + + ; b r e a k ; } }
x [ v + 1 ] = t a b [ i ] [ 0 ] ; //tab[0][i]
关于c - 从 C 中的多维数组中提取一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29703776/