Vua Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
kinh doanh, bán hàng, tư vấn, bảo hiểm Những cá nhân, tổ chức, đại lý,muốn bán, hợp đồng bảo hiểm
Saturday, September 27, 2014


/// tính định thức ma trận vuông bất kì
#include<stdio.h>
#include<conio.h>
/// hàm nhập ma trận
void nhap(float a[][100], int n)
{
printf("_________________________________________________________\n");
for (int i = 0; i < n; i++)
{
printf("nhap hang %d:\n", i + 1);
for (int j = 0; j < n; j++)
scanf_s("%f", &a[i][j]);
}
printf("_______________________________________________________\n");
}
///hàm xuất ma trận
void xuat(float a[][100], int n)
{
printf("_______________________________________________________\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("%8.2f   ", a[i][j]);
}
printf("\n");
}
printf("_________________________________________________________\n");
}
///hàm tính ma trận
float tinh(float a[][100], int n)
{
///khai báo biến và mảng
int i, j, k, dem = 0,kt=0;
float b[100], c[100], h, det = 1;
for (i = 0; i < n - 1; i++)
{
///nếu số ở đường chéo chính =0 thì biến đổi để mất số 0 đó đi
if (a[i][i] == 0)
{
///tìm 1 số khác không trên hàng i
for (j = 0; j < n; j++)
if (a[i][j] != 0)
{
///tiến hành đổi chổ 2 cột i và j
for (k = 0; k < n; k++)
{
c[k] = a[k][i];
a[k][i] = a[k][j];
a[k][j] = c[k];
}
///sau khi đổi xong thì đếm số lần đổi và thoát khỏi vòng for,if
dem++;
kt++;
break;
}
if (kt == 0) return 0;

}
///dùng mảng b[i] để lưu lại những số ta đã chia
b[i] = a[i][i];
///tạo số 1 ở dòng i cột i
for (j = 0; j < n; j++) a[i][j] = a[i][j] / b[i];
///tiến hành biến đổi để có các số 0 tạo thành ma trận tam giác
for (j = i + 1; j < n; j++)
{
h = a[j][i];
for (k = 0; k < n; k++) a[j][k] = a[j][k] - h*a[i][k];
}
}
///vì số thứ [n][n] ta không thể biến nó thành số 0 do nó là hàng cuối cùng
b[n - 1] = a[n - 1][n - 1];
///giá trị của định thức là tích các số mà ta đã chia, tức là b[i]
for (i = 0; i < n; i++) det *= b[i];
/// nếu số lần đổi cột là số lẻ thì ta cần thêm dấu trừ vào định thức đã tính ở trên
if (dem % 2 == 0) return det; else return -det;
}
///chương trình chính
void main()
{
float a[100][100];
int n;
printf("nhap cap cua ma tran:\n");
scanf_s("%d", &n);
nhap(a, n);
xuat(a, n);
printf("dinh thuc cua ma tran la: %.2f", tinh(a, n));
_getch();

}




copy xin vui lòng để tên tác giả bài viết và link blog
xin chân thành cảm ơn!

0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts