C 在列数最小的矩阵中查找前导元素
我需要找到最小列中的第一个前导元素(行中不同于0的第一个数字) 例如,在矩阵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,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,应该使用likea[I][j]=…
欢迎使用SO!如何定义“最小列”?这是列的总和、列中元素的计数还是列的索引号(即j
)?