C 在列数最小的矩阵中查找前导元素

C 在列数最小的矩阵中查找前导元素,c,pointers,matrix,C,Pointers,Matrix,我需要找到最小列中的第一个前导元素(行中不同于0的第一个数字) 例如,在矩阵{(0,2,2),(2,3,5),(0,2,5)}中,前导元素是2:第二行第一列 在矩阵{(0,0,6)、(0,0,5)、(0,0,2)}中,前导元素是6 bool find_leading_elements(double a[][M], int n, int m, int *row, int *column) { int i, j, first_j = 0, count = 0; for (i = 0

我需要找到最小列中的第一个前导元素(行中不同于0的第一个数字)

例如,在矩阵
{(0,2,2),(2,3,5),(0,2,5)}
中,前导元素是2:第二行第一列

在矩阵
{(0,0,6)、(0,0,5)、(0,0,2)}
中,前导元素是6

bool find_leading_elements(double a[][M], int n, int m, int *row, int *column) {
    int i, j, first_j = 0, count = 0;

    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            if (a[i][j] != 0)
                first_j = min(first_j, j);
            else 
                count++;
        }
    }

    if (count == n * m)
        return false;
    else {
        *row = i;
        *column = first_j;
        return true;
    }
}
bool find_leading_元素(双a[][M],int n,int M,int*行,int*列){
int i,j,first_j=0,count=0;
对于(i=0;i
我编写的代码正确地给出了最小的列,但我不确定如何获得正确的行。你有什么建议吗


注:在
min(first_j,j)
min
只是一个函数,每当我找到一个没有零的位置时,它会给我提供最小的列。

双a[][M]
应该是
int(*a)[3]

您可以检查
a[0][0]
a[1][0]
a[2][0]
a[0][1]
。。。。。直到
a[i][j]!=0
或结束

以下
code
可以工作:

#include <stdio.h>
#include <stdbool.h>

bool find_leading_elements(int (*a)[3], int n, int m, int* row, int* col) {
  for (int j = 0; j != m; ++j)
    for (int i = 0; i != n; ++i)
      if (a[i][j] != 0) {
        *row = i;
        *col = j;
        return true;
      }
  return false;
}

int main() {
  int a[3][3] = {
    {0, 2, 2},
    {2, 3, 5},
    {0, 2, 5}
  };
  int row;
  int col;
  if (find_leading_elements(a, 3, 3, &row, &col))
    printf("row= %d col = %d \n", row, col);
  else
    printf("No answer\n");
  return 0;
}
#包括
#包括
布尔查找前导元素(int(*a)[3],int n,int m,int*行,int*列){
对于(int j=0;j!=m;++j)
对于(int i=0;i!=n;++i)
如果(a[i][j]!=0){
*行=i;
*col=j;
返回true;
}
返回false;
}
int main(){
INTA[3][3]={
{0, 2, 2},
{2, 3, 5},
{0, 2, 5}
};
int行;
int col;
if(查找前导元素(a、3、3、行和列))
printf(“行=%d列=%d\n”,行,列);
其他的
printf(“无答案”);
返回0;
}

为什么不能加倍@因为使用
a[i][j]!=0
几乎同样适用于双。。。在任何情况下,
int a[][M]
相当于
int(*a)[M]
作为函数参数。我认为对于double,应该使用like
a[I][j]=…
欢迎使用SO!如何定义“最小列”?这是列的总和、列中元素的计数还是列的索引号(即
j
)?