à, còn nữa!!!!
Các bác chỉ giùm em làm cách nào để post code lên cái. không cứ gửi nguyên cả bài C thế này không đẹp lắm.
Code:// De: nhap vao mot ma tran, kiem tra co phai la ma tran don vi khong va in ra ma tran chuyen vi //Chi can xem giup minh doan kiem tra ma tran don vi thoi #include<stdio.h> #include<conio.h> #include<ctype.h> #define mx 10 int main() { int m,n,i,j,x,a[mx][mx],tong,tich; char c; do { printf("\n nhap ma tran can kiem tra vao"); printf("\n m=");scanf("%d",&m); printf("\n n=");scanf("%d",&n); for(i=0 ; i<m ; i++) for(j=0 ; j<n ; j++) { printf("\n a[%d][%d] =",i,j); scanf("%d",&x); a[i][j]=x; } // In ma tran for (i=0 ; i<m ; i++) { printf("\n"); for (j=0 ; j<n ; j++) printf("\t%d",a[i][j]); } // Kiem tra ma tran don vi while(m==n) { tong=0;tich=1; for(i=0;i<n;i++) for(j=0;j<n;j++) { tong+=a[i][j]; tich*=a[i][i]; } if((tong==n)&&(tich==1)) printf("\n Day la ma tran don vi"); } printf("\n day khong phai la ma tran don vi"); // Tim ma tran chuyen vi printf("\n Ma tran chuyen vi cua ma tran tren la"); for(j=0;j<n;j++) { printf("\n"); for(i=0;i<m;i++) printf("\t%d",a[i][j]); } printf("\n\tBan co muon kiem tra mot ma tran khac khong: C/K"); scanf("%c",&c); c=getch(); } while((toupper(c)=='c')||(toupper(c)=='C')); }
Đã được chỉnh sửa lần cuối bởi phantuan_th : 14-04-2007 lúc 04:10 PM. Lý do: viết bằng code đây
KID
à, còn nữa!!!!
Các bác chỉ giùm em làm cách nào để post code lên cái. không cứ gửi nguyên cả bài C thế này không đẹp lắm.
KID
Khoan cậu cho tớ biết cái ma trân đơn vị là sao thử coi !
Thế thì chỉ cần kiểm tra thế này thôi nè :
thía là xong rồiint tong=0;tich=1;
for(int i=0;i<n;i++)
for(INT J=0;J<N;J++)
{ tong+=a[i][j];
if(i==j)tich*=a[i][j];
}
if(tong == n && tich== 1)
return 1;
Hàm để kiểm tra ma trận đơn vị đây, bạn test thử nhé:
C Code:
void MTDonVi(int a[],int n) //n la cap cua ma tran { int i,j; int res1=0; //result int res2=0; for(i=0;i<n;i++) { for(j=0;j<n;j++) if (i==j) if (a[i][j]==1) res1=1; else { res1=0; break; } else if (a[i][j]==0) res2=1; else { res2=0; break; } } }
Hi, bài này mình demo trên C#, hổng biết chuyển qua C có bị sai không, bạn demo lại dùm mình nhé, có gì sai thì reply cho mình
----------PHP Code:// Kiem tra ma tran don vi
while(m==n)
{
tong=0;tich=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
tong+=a[i][j];
tich*=a[i][i];
}
if((tong==n)&&(tich==1))
printf("\n Day la ma tran don vi");
}
printf("\n day khong phai la ma tran don vi");
Sao lại là while(m==n) nhỉ . Lặp ko bao giờ dừng nếu m==n ?? . Thay bằng if là giải quyết xong mà .
Mình sửa thành thế này :
PHP Code:if(m==n)
{
tong=0;tich=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
tong+=a[i][j];
tich*=a[i][i];
}
if((tong==n)&&(tich==1))
printf("\n Day la ma tran don vi");
}
else
printf("\n day khong phai la ma tran don vi");
ko in ra đâu
cái 1 0 0
0 0 1
0 0 1
nó báo là ko phải ma trận chuyển vị
Đã được chỉnh sửa lần cuối bởi xtrung : 14-04-2007 lúc 11:01 PM.
Với đoạn code trên, mình dám cá là 2 ma trận sau đây vẫn tương đồng:
1 0 0
0 1 0
0 0 1
và
1 0 0
0 1 0
0 1 0
vì bạn chỉ nghĩ đơn giản là ma trận đơn vị sẽ có tong=n và tich=1
- Kế đến, mình cũng chắc là nếu cậu nhập vào ma trận đơn vị, tong=n nhưng tich sẽ luôn khác 1, vì sao ư? vì 0 nhân với bất cứ số nào cũng bằng 0. Trong khi cậu lại xét tong==n&&tich==1, sẽ chẳng bao giờ ra kết quả đúng.
Đấy là mình chưa nói đến vụ 2 ma trận như ở trên nhé.