Yêu cầu bài toán như sau: nhập 2 ma trận a và b. Tính tổng 2 ma trận và lưu vào ma trận mới là c, sau đó tìm max của ma trận c.
Mã:
#include<stdio.h>
#include<conio.h>
#define max1 50
int ln(int z[][max1],int n)
{
int i,j,max;
max=z[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
max=(max>z[i][j])?max:z[i][j];
return max;
}
void main()
{
clrscr();
int b[max1][max1],a[max1][max1],c[max1][max1],n,x,y,g,h,i,j;
scanf("%d",&n);
printf("Nhap ma tran a: \n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\n");
printf("Nhap ma tran b: \n");
for(g=0;g<n;g++)
for(h=0;h<n;h++)
scanf("%d",&b[g][h]);
for(x=0;x<n;x++)
for(y=0;y<n;y++)
c[x][y]=a[x][y]+b[x][y];
printf("Ma tran A: \n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("\nMa tran B: \n");
for(g=0;g<n;g++)
{
for(h=0;h<n;h++)
printf("%d",b[g][h]);
printf("\n");
}
printf("\nMa tran moi: \n");
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%3d",c[x][y]);
printf("\n");
}
printf("Max cua ma tran moi la %d",ln(c,n));
getch();
}
bài vừa rồi mình làm theo cách bình thường nên hơi dài. Bạn nào muốn rút ngắn lại có thể dùng các hàm để chương trình sáng sủa hơn:
Mã:
#include<stdio.h>
#include<conio.h>
#define max 50
int n;
int nhap(int t[][max])
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&t[i][j]);
}
void xuat(int t[][max])
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%3d",t[i][j]);
printf("\n");
}
printf("\n");
}
void tong(int a[][max],int b[][max],int c[][max])
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
}
int ln(int h[][max],int n)
{
int lonnhat;
for(int i=0;i<n;i++)
lonnhat=(lonnhat>h[i][j])?lonnhat:h[i][j];
return lonnhat;
}
main()
{
clrscr();
int a[max][max],b[max][max],c[max][max];
scanf("%d",&n);
printf("Nhap ma tran A: ");
nhap(a);
printf("Nhap ma tran B: ");
nhap(b);
printf("\n");
xuat(a);
xuat(b);
tong(a,b,c);
xuat(c);
printf("\n");
lonnhat(c,n);
getch();
}