2014-03-31 5 views
-2

그래서이 프로그램은 정수 (i)를 취한 다음 2D 배열 ixi 을 만들고 잘 작동하도록 할 수 있지만 지금은 가장 작은 숫자를 찾으려고합니다. 배열에서 항상 0을 반환합니다.2 차원 배열 C에서 최소 찾기

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; 
} 
+0

복사 - 붙여 넣기 대신에 그것을 입력의에 코드를; 아마도 "실제"코드에는이 게시물을 통과하지 못했던 많은 오류가 있습니다. 또한이 함수를 호출하는 코드를 표시하십시오. 나는'MAXrow'와'MAXcol'이 다르다면 두 차원 모두에'n'을 사용하는 것이 옳지 않다고 생각합니다. –

답변

1

"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; 
} 
+0

죄송합니다. 그것이 실제로 코드에 어떻게 쓰여졌는지, 복사 할 때 엉망이되었습니다. 어느 쪽이든 여전히 0을 반환하고 있습니다. – user3427697

+0

걱정할 필요가 없습니다. 몇 가지 질문 : ** 1.) ** 가능한 최소 숫자는 0입니까? ** 2.) ** 2D 배열의 크기가 x와 y 방향 모두에서 'n'입니까? – tambykojak

+0

나는 실제로 그것을 알아 냈다. 내 주요 함수에서 방금 함수를 호출했지만 함수가 리턴 한 것과 동등한 최소값을 설정하지 않았다. 그래도 도와 ​​줘서 고마워! – user3427697

0
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); 
}