Tải bản đầy đủ (.doc) (23 trang)

ma tran

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (98.92 KB, 23 trang )

Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

Lời nói đầu
Tin học là công cụ đắc lực, là lĩnh vực có nhiều ứng dụng
phục vụ cho nhiều ngành khác nhau trong đời sống xà hội. Cho
nên việc nghiên cứu các vấn đề ứng dụng cho tin học cũng là
việc nghiên cứu các ứng dụng đợc giải quyết nh thế nào trên
máy tính.
Sinh viên CNTT ngày nay không ngừng học hỏi, cập nhật
những công cụ mới và biết ứng dụng những kiến thức đà đợc
học vào thực tiễn của cuộc sống. Đợt thực tập cơ sở này chính là
bớc đầu tiên đi sâu vào tìm hiểu lĩnh vực công nghệ thông tin
ứng dụng trong thực tiễn. Trên cơ sở những kiến thức đà đợc
học trong những năm vừa qua, để chúng em hoàn thành đợt
thực tập cơ sở này.
Đề TàI GồM 4 CÂU:
Câu 1: Ma trận
Câu 2: Tập lệnh cơ bản của
Câu 3: Tìm hiểu về Windows
Câu 4: Ma trận
Ngoài sự cố gắng nỗ lực của các thành viên trong nhóm là
sự tận tình giúp đỡ và giảng dạy của các thầy, cô giáo trong
khoa CNTT Trờng Đại học Vinh. Nhân dịp này, chúng em xin
chân thành cảm ơn Tiến Sỹ Nguyễn Trung Hoà đà hớng dẫn
tận tình và giúp đỡ chúng em trong quá trình làm đề tài. Xin
kính chúc Tiến Sỹ Nguyễn Trung Hoà sức khỏe, thành công
và tiếp tục đạt nhiều thắng lợi trong nghiên cứu khoa học và sự
nghiệp trồng ngời.


Do thời gian và trình độ có hạn nên chắc chắn không tránh
khỏi những thiếu sót. Kính mong nhận đợc sự đóng góp ý kiến
Nhóm sinh viên thực hiƯn: líp 47B_CNTT
-1-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

của các thầy cô và các bạn.

Nội dung đề tài

Đề tài thực tập cơ sở MÃ đề: 006
Phần Ma Trận
I

1.1

Cài đặt các thuật toán về ma trận

Nhóm sinh viên thực hiện: lớp 47B_CNTT
-2-

Tran
g
3
4



Đề tài thực tập cơ sở
Trung Hòa

Nhóm sinh viên thực hiƯn: líp 47B_CNTT
-3-

GVHD: TS.Ngun


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

Câu 1: Ma Trận
1.1. Cài đặt các thuật toán về ma trận:
Cho hai ma trËn AnAx mB vµ ma trËn BnBx mB trong đó:
nA, mA và nB, mB lần lợt là số hàng, cột của ma trận A và ma
trận B. Khi đó ta có các phép toán cộng, nhân và tính định
thức ma trËn.
1.1.1. Céng ma trËn:
§Ĩ cã thĨ céng hai ma trận A và B thì phải thỏa mÃn điều
kiện: nA = nB và mA = mB, khi đó ma trận kết quả C có: nC =
nA = nB và mC = mA = mB.
Tht to¸n céng ma trËn:
* KiĨm tra cì hai ma trËn nÕu hai ma trËn cïng cì thùc hiÖn
phÐp céng:
cij = aij + bij

(i = 1, 2, 3, …, n; j = 1, 2, 3, …, m)
* Đoạn chơng trình cộng hai ma trận:
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
C[i][j] = A[i][j] + B[i][j];
(n = nA = nB = nC vµ m = mA = mB = mC)
* Céng hai ma trËn:
float congMT()
{ int i, j;
if ((nA != nB) || (mA != mB))
{
printf("Hai ma tran khong cung co"); return 0;
}
nC = nA; mC = mA;
for (i=1; i<=nC; i++)
for (j=1; j<=mC; j++)
Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-4-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

C[i][j] = A[i][j] + B[i][j];
printf("\nMa tran: A"); inMT(A,nA,mA);
printf("\nMa tran: B"); inMT(B,nB,mB);
printf("\n_____________________________________________");
printf("\nMa tran: A+B"); inMT(C,nC,mC);

return 1;
}
Trên đây là chơng trình con thực hiện cộng hai ma trận A
và B:
- Nếu hai ma trận không cùng cỡ thì thông báo và giá trị trả
về là 0
- NÕu hai ma trËn cïng cì th× thùc hiƯn cộng và giá trị trả
về là 1
// Kết quả chạy
Ma tran: A


│ 1.00 2.00 3.00 │
│ 2.00 2.00 1.00 │
│ 1.00 2.00 2.00 │


Ma tran: B


│ 1.00 2.00 1.00 │
│ 2.00 1.00 1.00 │
│ 1.00 2.00 1.00 │


────────────────────────────
Ma tran: A+B


│ 2.00 4.00 4.00 │

│ 4.00 3.00 2.00 │
│ 2.00 4.00 3.00 │


Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-5-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

1.1.2. Nhân ma trận:
Để có thể thực hiện nhân ma trận (A * B) thì phải thỏa mÃn
điều kiện: mA = nB
khi đó ma trận kết quả C có: nC = nA và mC = mB
Thuật toán nhân ma trận:
Kiểm tra nếu số cét cđa ma trËn A b»ng sè hµng cđa ma trận
B thì ta thực hiện phép nhân ma trận:
cij = aik*bkj (i = 1, 2, 3, …, nC; j = 1, 2, 3, …, mC)

* Nh©n hai ma trËn
for (i=1; i<=nC; i++)
for (j=1; j<=mC; j++)
{
C[i][j] = 0;
for (k=1; k<=mA; k++)
C[i][j] = C[i][j] + A[i][k]*B[k]
[j];

}
(nC = nA vµ mC = mB)
* Đoạn chơng trình nhân hai ma trận:
float nhanMT()
{
int i, j, k;
if (mA != nB)
{
printf("Hai ma tran: %dx%d va %dx%d",nA,mA,nB,mB);
printf("\nKhong thuc hien duoc phep nhan"); return 0;
}
nC = nA; mC = mB;
for (i=1; i<=nC; i++)
for (j=1; j<=mC; j++)
{
mA

k 1

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-6-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

C[i][j] = 0;
for (k=1; k<=mA; k++)

C[i][j] += A[i][k]*B[k][j];
}
printf("\nMa tran: A"); inMT(A,nA,mA);
printf("\nMa tran: B"); inMT(B,nB,mB);
printf("\n_________________________________________________");
printf("\nMa tran: A*B"); inMT(C,nC,mC);
return 1;
}
Trên đây là chơng trình con thực hiện nhân hai ma trận A
và B:
- Nếu hàng cđa ma trËn A kh«ng b»ng cét cđa ma trËn B thì
thông báo và giá trị trả về là 0
- NÕu hµng cđa ma trËn A b»ng cét cđa ma trận B thì thực hiện
nhân và giá trị trả về là 1
// Kết quả chạy chơng trình nhân ma trận
Ma tran: A


│ 1.00 2.00 3.00 │
│ 2.00 2.00 1.00 │
│ 1.00 2.00 2.00 │


Ma tran: B


│ 1.00 2.00 1.00 │
│ 2.00 1.00 1.00 │
│ 1.00 2.00 1.00 │



─────────────────────────────────

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-7-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

Ma tran: A*B


8.00 10.00 6.00 │
│ 7.00 8.00 5.00 │
│ 7.00 8.00 5.00


1.1.3. Tính định thức:
Cho ma trận vuông Anxn tính định thức của ma trận A:

det(Aij) là định thức của ma trận A sau khi bỏ đi hàng i và
cột j
Thuật toán tính định thức bằng phơng pháp khử Gauss:
áp dụng các phép biến đổi đa định thức về dạng:

* Đoạn chơng trình tính định thức:
float dinhthucMT(float A[maxMT][maxMT], int n)

{
int i, j, k, stop, m; float tg, giatri=1;
if (n < 2) return 0;
stop = 0; i = 1;
while (!stop)
{
if (A[i][i] == 0)
{
Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-8-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

m = i;
for (j=i+1; j<=n; j++)
if (fabs(A[j][i]) > A[m][i]) m = j;
if (m != i)
{
giatri = -giatri;
for (j=i; j<=n; j++)
{
tg = A[i][j]; A[i][j] = A[m][j]; A[m][j] = tg;
}
}
else
{

stop = 1; giatri = 0;
}
}
if (A[i][i] != 0)
{
tg = A[i][i];
giatri *= tg;
for (j=i; j<=n; j++) A[i][j] = A[i][j]/tg;
for (j=i+1; j<=n; j++)
{
for (k=i+1; k<=n; k++)
A[j][k] -= A[i][k]*A[j][i];
A[j][i] = 0;
}
}
i++;
if (i > n) stop = 1;
Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
-9-


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

}
return giatri;
}
// Kết quả chơng trình tính định thức

Ma tran: A


1.00 2.00 3.00 │
│ 2.00 2.00 1.00 │
│ 1.00 2.00 2.00 │


Dinh thuc cua ma tran tren la: 2.00
4.2. X©y dùng Menu
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<string.h>
#include<dos.h>
#include <stdlib.h>
#define X 50
#define Y 50
#define SM 6
#define maxMT 50
float

A[maxMT][maxMT],

B[maxMT][maxMT],

D[maxMT],E[maxMT][maxMT];
int nA, mA, nB, mB, nC, mC, nE, mE;
//---------------- Cho ma tran ----------------void inMT(float D[maxMT][maxMT], int nD, int mD);

int doctep();
Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 10 -

C[maxMT][maxMT],


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

float congMT();
float nhanMT();
//---------------- Cho dinh thuc ---------------float dinhthucMT(float A[maxMT][maxMT], int n);
int doctepDT();
void nhapDT();
void dinhthuc();
char t[11][50]={"

MENU CHINH CHUONG TRINH

"1. Nhap Tep

",

"2. Cong Ma Tran

",


"3. Nhan Ma Tran

",

"4. Tinh Dinh Thuc
"5. In Ket Qua

",

",

",

"6. ket thuc"};
/*=========================Ve
MENU=========================*/
void vethanh(int i)
{
setfillstyle(1,DARKGRAY);
bar(getmaxx()/2-120,280+((i-1)*20),getmaxx()/2+120,300+((i-1)*20));
setcolor(MAGENTA);
rectangle(getmaxx()/2-120,280+((i-1)*20),getmaxx()/2+120,300+((i1)*20));
setcolor(YELLOW);
outtextxy(getmaxx()/2-100,285+((i-1)*20),t[i]);
}
void vehopsang(int j)
{
setfillstyle(1,BLUE);
bar(getmaxx()/2-120,283+((j-1)*20),getmaxx()/2+120,296+((j-1)*20));


Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 11 -


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

outtextxy(getmaxx()/2-100,285+((j-1)*20),t[j]);
}
/*=========================Doc-nhap
tep=========================*/
//====== Noi dung cac chuong trinh con ============
//------------ Ma tran -----------void inMT(float D[maxMT][maxMT], int nD, int mD)
{
int i, j;
printf("\n\tÚ");
for (j=1; j<=mD; j++) printf(" %6c",' ');
printf(" ¿");
for (i=1; i<=nD; i++)
{
printf("\n\t³");
for (j=1; j<=mD; j++)
printf(" %6.2f",D[i][j]);
printf(" ³");
}
printf("\n\tÀ");
for (j=1; j<=mD; j++) printf(" %6c",' ');
printf(" Ù");

}
int doctep()
{
char tentep[100]; int i, j; float tg;
FILE *f;
printf("\nNhap ten tep: "); fflush(stdin); gets(tentep);
f = fopen(tentep,"rt");
if (f == NULL)

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 12 -


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

{
printf("\nKhong tim thay tep: %s",tentep); return 0;
}
fscanf(f,"%d %d",&nA,&mA);
for (i=1; i<=nA; i++)
for (j=1; j<=mA; j++)
{
fscanf(f,"%f",&tg); A[i][j] = tg;
}
fscanf(f,"%d %d",&nB,&mB);
for (i=1; i<=nB; i++)
for (j=1; j<=mB; j++)

{
fscanf(f,"%f",&tg); B[i][j] = tg;
}
fclose(f);
//---------------- Cho dinh thuc ---------------return 1;
}
float congMT()
{
int i, j;
if ((nA != nB) || (mA != mB))
{
printf("Hai ma tran khong cung co"); return 0;
}
nC = nA; mC = mA;
for (i=1; i<=nC; i++)
for (j=1; j<=mC; j++)
C[i][j] = A[i][j] + B[i][j];

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 13 -


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

return 1;
}
float nhanMT()

{
int i, j, k;
if (mA != nB)
{
printf("Hai ma tran: %dx%d va %dx%d",nA,mA,nB,mB);
printf("\nKhong thuc hien duoc phep nhan"); return 0;
}
nE = nA; mE = mB;
for (i=1; i<=nE; i++)
for (j=1; j<=mE; j++)
{
E[i][j] = 0;
for (k=1; k<=mA; k++)
E[i][j] += A[i][k]*B[k][j];
}
return 1;
}
//------------ Dinh thuc ---------float dinhthucMT(float A[maxMT][maxMT], int n)
{
int i, j, k, stop, m; float tg, giatri=1;
if (n < 2) return 0;
stop = 0; i = 1;
while (!stop)
{
if (A[i][i] == 0)
{

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 14 -



Đề tài thực tập cơ sở
Trung Hòa
m = i;
for (j=i+1; j<=n; j++)
if (fabs(A[j][i]) > A[m][i]) m = j;
if (m != i)
{
giatri = -giatri;
for (j=i; j<=n; j++)
{
tg = A[i][j]; A[i][j] = A[m][j]; A[m][j] = tg;
}
}
else
{
stop = 1; giatri = 0;
}
}
if (A[i][i] != 0)
{
tg = A[i][i];
giatri *= tg;
for (j=i; j<=n; j++) A[i][j] = A[i][j]/tg;
for (j=i+1; j<=n; j++)
{
for (k=i+1; k<=n; k++)
A[j][k] -= A[i][k]*A[j][i];
A[j][i] = 0;
}

}
i++;
if (i > n) stop = 1;

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 15 -

GVHD: TS.Ngun


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

}
return giatri;
}
int doctepDT()
{ char tentep[100]; int i, j; float tg; FILE *f;
printf("\n\tNhap ten tep so lieu: "); fflush(stdin); gets(tentep);
f = fopen(tentep,"rt");
if (f == NULL)
{ printf("\n\tKhong tim thay tep: %s",tentep); return 0;
}
fscanf(f,"%d%d",&nC,&mC);
if (nC != mC)
{ printf("\nKhong phai la ma tran vuong"); return 0;
}
for (i=1; i<=nC; i++)

for (j=1; j<=mC; j++)
{
fscanf(f,"%f",&tg); C[i][j] = tg;
}
fclose(f);
//-----------------------------------------------clrscr();
printf("\n\t\tMa tran:");
inMT(C,nC,mC);
printf("\n\n\tDinh thuc cua ma tran tren la: %f",dinhthucMT(C,nC));
return 1;
}
void nhapDT()
{
int i, j; float tg;

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 16 -


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

printf("\tNhap so hang = so cot = "); scanf("%d",&nC);
mC = nC;
for (i=1; i<=nC; i++)
for (j=1; j<=mC; j++)
{
printf("C[%d][%d]: ",i,j); scanf("%f",&tg); C[i][j] = tg;

}
clrscr();
printf("\n\t\tMa tran:");
inMT(C,nC,mC);
printf("\n\n\tDinh thuc cua ma tran tren la:%6.2f",dinhthucMT(C,nC));
}
void dinhthuc()
{
int ch;
do
{
clrscr();
printf("\n\n\t1.Nhap tu tep");
printf("\n\t2.Nhap tu ban phim");
printf("\n\t3.Ma tran A");
printf("\n\t4.Ma tran B");
printf("\n\t5.Exit");
printf("\n\t(Esc to exit)");
ch = getch();
if (ch > '0' && ch < '5') clrscr();
switch (ch)
{
case '1': doctepDT(); break;
case '2': nhapDT(); break;

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 17 -


Đề tài thực tập cơ sở

Trung Hòa

GVHD: TS.Nguyễn

case '3':
printf("\n\t\tMa tran: A"); inMT(A,nA,mA);
if (nA != mA)
printf("\n\n\tKhong phai la ma tran vuong");
else
printf("\n\n\tDinh thuc cua ma tran tren la:%6.2f",dinhthucMT(A,nA));
break;
case '4':
printf("\n\t\tMa tran: B"); inMT(B,nB,mB);
if (nB != mB)
printf("\n\n\tKhong phai la ma tran vuong");
else
printf("\n\n\tDinh

thuc

cua

%6.2f",dinhthucMT(B,nB));
break;
}
if (ch > '0' && ch < '5') getch();
} while (ch != '5' && ch != 27);
}
void inkq()
{

int k;
clrscr();
printf("\t Ket qua cua chuong trinh Ma Tran ");
printf("\n\t1.Hien thi ma tran tu tep.");
printf("\n\t2.Kq phep cong MT");
printf("\n\t3.Kq phep nhan MT");
printf("\n\t4. Thoat! ");
do

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 18 -

ma

tran

tren

la:


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

{
printf("\n\tChon muc can in KQ: ");
scanf("%d",&k);
}

while(k<=0||k>4);
switch (k)
{
case 1:

cleardevice();

printf("\t\tMa tran doc nhap tu tep du lieu");
printf("\n\t\tMa tran A: "); inMT(A,nA,mA);
printf("\n\t\tMa tran B: "); inMT(B,nB,mB);
break;
case 2: cleardevice();
printf("\n\t\tMa tran A: "); inMT(A,nA,mA);
printf("\n\t\tMa tran B: "); inMT(B,nB,mB);
printf("\n...............................");
printf("\n\t\tMa tran: A+B"); inMT(C,nC,mC);
break;
case 3: cleardevice();
printf("\n\t\tMa tran A: "); inMT(A,nA,mA);
printf("\n\t\tMa tran B: "); inMT(B,nB,mB);
printf("\n...............................");
printf("\n\t\tMa tran: A*B"); inMT(E,nE,mE);
break;
case 4: exit;
}
if (k > 0 && k < 4) getch();
}
/*====================

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT

- 19 -

chuong

trinh

chinh


Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

====================*/
void main()
{ clrscr();
int i,j=1;
int gm,gd=DETECT;
char c1,c2;
initgraph(&gd,&gm,"");
Lap:
cleardevice();
setcolor(5);
settextstyle(0,0,2);
outtextxy(100,20,"MENU THUC HIEN CAC CHUC NANG");
outtextxy(100,40,"============&===============");
settextstyle(0,0,1);
setcolor(1);
outtextxy(450,170," Sinh Vien Thuc Hien");

outtextxy(472,180, "*-------&-------*");
outtextxy(450,190,"

Mai Van Lam ");

setcolor(15);
outtextxy(200,120,"

Ma De: 006

");

settextstyle(0,0,1);
setcolor(RED);
outtextxy(14,142, " GV.Huong Dan ");
outtextxy(10,150, "*=======&========*");
outtextxy(10,160, " T.S:

");

settextstyle(7,0,2);
setcolor(RED);
outtextxy(10,170, " Nguyen Trung Hoa");
settextstyle(10,0,2);
setcolor(LIGHTRED);

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 20 -



Đề tài thực tập cơ sở
Trung Hòa

GVHD: TS.Nguyễn

outtextxy(120,70,"DE TAI THUC TAP CO SO");
settextstyle(1,0,1);
setcolor(LIGHTRED);
outtextxy(70,420,"Su dung phim mui ten de Lua chon cong viec can lam
!");
settextstyle(0,0,0);
setbkcolor(3);
settextstyle(0,0,0);
bar(getmaxx()/2-120,250,getmaxx()/2+120,270);
setcolor(MAGENTA);
rectangle(getmaxx()/2-120,250,getmaxx()/2+120,270);
setcolor(YELLOW);
outtextxy(getmaxx()/2-120,255,t[0]);
for(i=1;i<=SM;i++)
vethanh(i);
vehopsang(j);
while(1)
{
if ((c1=getch())==0) c2=getch();
if (c1==13 && j==SM)
break;
else
if (c1==0 && (c2==80 || c2==72))
{
if (c2==80)

{
j++;
if (j>1) vethanh(j-1);
if (j==SM +1)
j=1; vehopsang(j);

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 21 -


Đề tài thực tập cơ sở
Trung Hòa
}
else
{
j--;
if (j<SM && j>1)vethanh(j+1);
if (j<1) j=SM ;
vehopsang(j);
}
}
else
if (c1==13)
{
switch(j)
{
case 1: cleardevice();
doctep();
break;
case 2: cleardevice();

congMT();
break;
case 3: cleardevice();
nhanMT();
break;
case 4: cleardevice();
dinhthuc();
break;
case 5: cleardevice();
inkq();
break;
case 6: exit;

Nhãm sinh viªn thùc hiƯn: líp 47B_CNTT
- 22 -

GVHD: TS.Ngun


Đề tài thực tập cơ sở
Trung Hòa
}
}
goto Lap;
}
closegraph();
}

Nhóm sinh viên thùc hiƯn: líp 47B_CNTT
- 23 -


GVHD: TS.Ngun



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×