Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在二维数组C中求最小值_C_Multidimensional Array_Min - Fatal编程技术网

在二维数组C中求最小值

在二维数组C中求最小值,c,multidimensional-array,min,C,Multidimensional Array,Min,所以我有这个程序来取一个整数(I),然后做一个2D数组I x I 这一部分我可以很好地工作,但现在我试图找到数组中的最小数,它总是返回0 int smallest_number(int b[MAXrow][MAXcol], int n) { int min = b[0][0]; int x,y; for (x = 0; x < n; x++) { for (y = 0; y < n; y++) {

所以我有这个程序来取一个整数(I),然后做一个2D数组I x I 这一部分我可以很好地工作,但现在我试图找到数组中的最小数,它总是返回0

int smallest_number(int b[MAXrow][MAXcol], int n)
{
    int min = b[0][0];
    int x,y;

    for (x = 0; x < n; x++)
    {

        for (y = 0; y < n; y++)
        {
            if (min > b[x][y])
            {
                min = b[x][y];

            }

        }
    }
return min; 
}
int最小值(int b[MAXrow][MAXcol],int n)
{
int min=b[0][0];
int x,y;
对于(x=0;xb[x][y])
{
min=b[x][y];
}
}
}
返回最小值;
}
您太快返回了“min”变量。目前,它在外环中。你想要的是让它在另一个循环之外

像这样:

int smallest_number(int b[MAXrow][MAXcol], int n)
{
   int min = b[0][0];
   int x,y;

   for (x = 0; x < n; x++)
   {
       for (y = 0; y < n; y++)
       {
           if (min > b[x][y])
           {
               min = b[x][y];
           }
       } 
   }  

   return min;
}
int最小值(int b[MAXrow][MAXcol],int n)
{
int min=b[0][0];
int x,y;
对于(x=0;xb[x][y])
{
min=b[x][y];
}
} 
}  
返回最小值;
}
您可以尝试下面的代码,从任意顺序的矩阵中查找最大值和最小值。
代码:
#包括
无效acc(int[5][5],int,int);
void maxmin(int[5][5],int,int);
void main()
{
INTA[5][5],r,c;
printf(“\n\t\t**来自矩阵**\n的最小和最大编号”);
printf(“\n\t输入行的大小:\n\t”);
scanf(“%d”、&r);
printf(“\t输入列的大小:\n\t”);
scanf(“%d”、&c);
行政协调会(a、r、c);
maxmin(a,r,c);
}
无效会计科目(内部m[5][5],内部r,内部c)
{
int i,j;
printf(“\n\t输入矩阵元素\n”);

对于(i=0;iOops。这实际上是在我的代码中编写的,我在复制它时把它弄糟了。无论哪种方式,它仍然返回0。不用担心。一些问题:1。)是否可能0是最小值?2。)您确定2d数组在x和y方向上的大小都是“n”吗?我实际上已经计算出来了,在我的主函数中,我刚刚调用了该函数,但我没有将最小值设置为等于函数返回的值。不过,感谢您的帮助!复制粘贴代码,而不是键入代码;可能“real”代码有更多的错误,这些错误没有传到本文。另外,请显示调用此函数的代码。我怀疑如果
MAXrow
MAXcol
不同,那么对这两个维度使用
n
是不正确的。
You can try code below to find maximum & minimum from a matrix of any order.

Code :

#include<stdio.h>

void acc(int [5][5],int,int );
void maxmin(int [5][5],int,int);

void main()
{
    int a[5][5],r,c;   

    printf("\n\t\t**Smallest & largest no. from matrix**\n"); 

    printf("\n\tEnter the size of row:\n\t");
    scanf("%d",&r);
    printf("\tEnter the size of column:\n\t");
    scanf("%d",&c);

    acc(a,r,c);
    maxmin(a,r,c);
}

void acc(int m[5][5],int r,int c)
{
    int i,j;
    printf("\n\tenter the elements of matrix\n");
    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            printf("\telement[%d][%d]=  ",i,j);
            scanf("%d",&m[i][j]);
        }
    }
}

void maxmin(int m[5][5],int r, int c)
{
    int max=m[0][0], min=m[0][0],i,j;

    for (i=0; i<r; i++)
    {
        for (j=0; j<c; j++)
        {   
            if(m[i][j]>max)
                max= m[i][j];

            if(m[i][j]<min)
                min= m[i][j];
        }
    }
    printf("\n\tGreatest no. is :  %d\n",max);
    printf("\n\tSmallest no. is :  %d\n",min);
}