Bài 1.4: Cho ma trận có m hàng, n cột. Viết chương trình có sử dụng hàm đệ quy cho biết giá trị lớn nhất, giá trị nhỏ nhất của ma trận.

Wednesday, November 26, 2014
Tìm min,max trên từng hàng rồi tìm min,max của các min,max đó để tìm ra giá trị min,max của ma trận
#include <stdio.h>
#include <conio.h>
void nhap( int a[][50],int m, int n)
{
      int i,j,tg;
      for(i=0;i<m;i++)
      for(j=0;j<n;j++)
      {
            printf("a[%d][%d]= ",i,j); scanf("%d",&tg);
            a[i][j]=tg;
      }
}
void xem( int a[][50],int m,int n)
{
      int i,j;
      printf("\n xem mang vua nhap:\n");
      for(i=0;i<m;i++)
      {
            for(j=0;j<n;j++) printf("%5d",a[i][j]);
            printf("\n");
      }
}
int min1( int a[][50], int m,int n)
{
      if(n==0) return a[m][n];
      if (a[m][n]<min1(a,m,n-1)) return a[m][n];
      return min1(a,m,n-1);
}
int min( int a[][50], int m, int n)
{
      if(m==0) return min1(a,m,n);
      if ( min1(a,m,n)<min(a,m-1,n)) return min1(a,m,n);
      return min(a,m-1,n);
}
int max1(int a[][50],int m,int n)
{
      if (n==0)return a[m][n];
      if (a[m][n]>max1(a,m,n-1)) return a[m][n];
      return max1 (a,m,n-1);
}
int max(int a[][50],int m,int n)
{
      if(m==0) return max1(a,m,n);
      if (max1(a,m,n)>max(a,m-1,n)) return max1(a,m,n);
      return max(a,m-1,n);
int main()
{
      int a[50][50],m,n;
      printf("Nhap so cot cua ma tran n = "); scanf("%d",&n);
      printf("Nhap so hang cua ma tran m = "); scanf("%d",&m);
      if ((n<=0)||(m<=0)) printf("so hang so cot ban nhap ko hop le!");
      else
      {
            nhap(a,m,n);
            xem(a,m,n);
            printf("\n min =  %d",min(a,m-1,n-1));
            printf("\n max =  %d",max(a,m-1,n-1));
      }
      getch();
}
Chia sẻ bài viết ^^
Other post

All comments [ 0 ]


Your comments