PDA

View Full Version : tính tổng ma trận đê!!!



LieuKyThien
10-05-2009, 07:02 PM
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.


#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:


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

sunboy
13-05-2009, 08:17 PM
Bài thì giả hay nhưng nhìn sơ qua có một số lỗi.
hàng thứ 10 có đoạn max=(max>a[i][j])?max:a[i][j]; hình như là z[i][j] chứ không phải a[i][j] ,xem lại bạn nhé !!
thank nhìu

LieuKyThien
16-05-2009, 07:54 PM
hê hê!!! cảm ơn nhiều nhá. Nếu bạn mà không phát hiện ra thì chắc mình "tiu" quá

sunboy
16-05-2009, 08:04 PM
Chú này thật ,nói phải đi đôi với làm chứ ,nói cảm ơn thì phải click... chứ :D

kinhdangmanh
25-09-2009, 10:44 PM
Bài thì giả hay nhưng nhìn sơ qua có một số lỗi.
hàng thứ 10 có đoạn max=(max>a[i][j])?max:a[i][j]; hình như là z[i][j] chứ không phải a[i][j] ,xem lại bạn nhé !!
thank nhìu

Bảo bạn còn sai! đéo đỡ nổi max=(max>a[i][j])?max:a[i][j]; lấy đâu ra cái này đây trong bài thằng kia ko có đâu!! Bản gốc nó ghi là


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



Thêm vong lặp for : for(int j=0;j<n;j++) là được, @sunboy: trước khi comment lên coi kỹ nhá!!




int ln(int h[][max],int n)
{
int lonnhat=h[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{

//C1: lonnhat=(lonnhat>h[i][j])?lonnhat:h[i][j];

//C2:
if(lonnhat<h[i][j])
{
lonnhat=h[i][j];
}
}
}
printf("Max cua ma tran Moi la: %d",lonnhat);
return 0;
}




hê hê!!! cảm ơn nhiều nhá. Nếu bạn mà không phát hiện ra thì chắc mình "tiu" quá

Dám chắc ko phải anh bạn làm bài này, thấy nó nói thế mà ko biết xem lại để bảo, đến tận hôm " getdate() " tao phải comment lại!!