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

All comments [ 0 ]
Your comments