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

Các bài toán về mảng một chiều và ma trận

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 (103.46 KB, 12 trang )

Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiu v ma trn...

Lời nói đầu
Ngôn ngữ lập trình đợc phổ biến hiện nay trong công
việc giảng dạy tin học. Trong ú ngụn ng Pascal có đặc điểm
ngữ nghĩa đơn giản và có tính logic, cấu trúc chơng trình
rõ ràng dễ hiểu, để sữa chữa và cải tiến. Tiểu luận “các bài
toán về mảng một chiều và ma trận, nhập, sắp xếp, cộng, nhân ma
trận, nghịch đảo, dữ liệu vào ra băng file văn bản ” nµy giúp các bạn
sinh viên thn tiƯn h¬n trong viƯc tìm phương pháp giải các bài tốn
số ngun một c¸ch khoa häc nhanh chãng vµ thn tiƯn.
TiĨu ln cho phÐp ngêi dïng:
1. Nhập
2. Cộng ma trn
3. Nhõn ma trn
4. Nghch o
5. thoỏt
Vì khả năng và thời gian có hạn nên tiểu luận của em
không tránh khỏi những hạn chế và thiếu sót. Em rất mong đợc sự chỉ bảo của thầy và sự góp ý của bạn bè để chơng trình
hoàn thiện hơn.
Cuối cùng em xin chân thành cảm ơn các thầy cô giáo
trong khoa Công nghệ thông tin trờng Đại học Vinh đà giảng dạy
và chỉ bảo những vấn đề liên quan đến tiểu luận. Đặc biệt
Em xin chân thành cảm ơn ThS. Vũ Văn Nam vỊ nh÷ng chØ

1


Gv Ths: Vũ Văn Nam



Các bài toán về mảng một chiu v ma trn...

dẫn khoa học và sự tận tình huớng dẫn giúp đỡ em hoàn thiện
tiểu luận này.
Em Xin
chân thành cảm ơn!
Vinh
04/2010

program sunge1;
uses crt;
type
imatr=array[1..20,1..20] of real;
imatr1=array[1..20] of integer;
var
f:text;
a3:imatr1;
a,a1,a2,c,d:imatr;
hangA,cotA,hangB,cotB:integer;fn:string;
i,j,m,n,q,max:integer;
Ch:char;
procedure doctep( var a:imatr;var h1,c1:integer);
begin
write('nhap ten tep:');readln(fn);
Writeln('Ma tran la: ');
assign(f,fn);
reset(f);

2



Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

readln(f,n,m); h1:=n;c1:=m;
for i:=1 to n do
begin
for j:=1 to m do
begin
read(f,a[i,j]);
end;
readln(f);
end;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:4:0);
writeln;
end;
close(f);
end;
{-------------------------------------------}
procedure xuat(a:imatr;n1:integer;n2:integer;fn:string);
begin
{Writeln('Nhap vao ten tep chua ket qua: '); readln(fn); }
assign(f,fn);
Rewrite(f);
for i:=1 to n1 do

begin
for j:=1 to n2 do
write(f,a[i,j]:10:4); writeln(f);

3


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

end;
close(f);
end;
{-----------------------}
procedure nhanmt;
begin
if cotA<>hangB then
writeln('Khong nhan duoc do CotA khac HangB')
else
begin
For i:=1 To hangA Do
For j:=1 To cotB Do
Begin
c[i,j]:=0;
For q:=1 To cotA Do
c[i,j]:= c[i,j] + a1[i,q] * a2[q,j];
End;
{--dua ra tep----}
xuat(c,hangA,cotB,'tich.txt');

{---xem tren man hinh---}
Writeln('Ma tran tich (C=A*B) la: ');
for i:=1 to hangA do
begin
for j:=1 to cotB do
write(c[i,j]:4);
writeln;

4


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

end;
end;
end;
procedure congmt;
begin
Writeln('Ma tran tong C=A+B la:');
for i:=1 to hangA do
for j:=1 to cotA do
c[i,j]:=a1[i,j]+a2[i,j];
for i:=1 to hangA do
begin
for j:=1 to cotA do
write(c[i,j]:4); writeln;
end;
{--dua ra tep----}

xuat(c,hangA,cotA,'tong.txt');
end;
{---------------tinh dinh thuc------------------}
procedure phanra( a:imatr;var L:imatr; var U:imatr;
n:integer);
var i,j,k:integer;
s:real;
Begin
for i:=0 to n do
for j:=0 to n do

5


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

Begin
U[i][j]:=0;
if(i=j) then
L[i,j]:=1
else
L[i][j]:=0;
end;
for j:=0 to n do
Begin
for i:=0 to j do
Begin
s:=0;

for k:=0 to i do
s:=s+L[i,k]*U[k,j];
U[i,j]:=a[i,j]-s;
end;
for i:=j+1 to n do
begin
s:=0;
for k:=0 to j do
s:=s+L[i,k]*U[k,j];
if (U[j,j]<>0) then
L[i,j]:=(a[i,j]-s)/U[j,j];
end;
end;
end;
function det( a:imatr;n:integer):real;

6


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

var d:real;
L,U:imatr;
Begin
d:=1;
phanra(a,L,U,n);
for i:=1 to n do
d:=d*L[i,i]*U[i,i];

det:=d;
end;
Procedure chuyenvi(a:imatr;var b:imatr;
hang:integer;cot:integer);
begin
for i:=1 to cot do
begin
for j:=1 to hang do
b[i,j]:=a[j,i];
end;
end;
procedure matrannd(a:imatr;var
b:imatr;hang:integer;cot:integer);
var dt:real;
begin
dt:=det(a,hang);
for i:=1 to hang do
begin
for j:=1 to cot do
b[i,j]:=1/dt*a[i,j];
end;

7


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

for i:=1 to hang do

begin
for j:=1 to cot do
write(b[i,j]:10:4);writeln;end;
end;
{------------Mang 1 chieu--------------}
{------------Doc mang mot chieu------------}
procedure doctep1( var a:imatr1;var n:integer);
begin
write('nhap ten tep:');readln(fn);
Writeln('Ma tran la: ');
assign(f,fn);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,a[i]);
for i:=1 to n do
write(a[i]:4); writeln;
close(f);
end;
{-------In mang 1 chieu---------------}
procedure xuat1chieu(a:imatr1;fn:string);
begin
{Writeln('Nhap vao ten tep chua ket qua: '); readln(fn); }
assign(f,fn);
Rewrite(f);

8


Gv Ths: Vũ Văn Nam


Các bài toán về mảng một chiều và ma trận...

for i:=1 to n do
write(f,a[i]:4); writeln;
close(f);
end;
procedure sapxep(var a:imatr1;n:integer);
var tg:integer;
begin
Writeln('Mang sau khi sap xep: ');
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
for i:=1 to n do
write(a[i]:4);
xuat1chieu(a,'sapxep1.txt');
end;
{--------------------------------------}
procedure mang1;
Begin
clrscr;
Repeat
repeat
Writeln(' MENU MANG MOT CHIEU ');


9


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

Writeln('1- Nhap');
Writeln('2-Sap xep');
Writeln('3-Thoat');
Ch := Readkey;
Until Ch in['1'..'4'];
Case Ch Of
'1' : Begin doctep1(a3,n);writeln('Moi ban tiep
tuc..');writeln;readln;end;
'2' : Begin sapxep(a3,n); writeln('Moi ban tiep
tuc..');writeln;end;
End;
Until Ch = '3'
End;
{------------Menu ma tran---------}
procedure mang2;
Begin
Repeat
Repeat
Writeln(' MENU MA TRAN ');
Writeln('1- Nhap');
Writeln('2-Cong ma tran');
Writeln('3-Nhan ma tran');

Writeln('4-Nghich dao');
Writeln('5-Thoat');
Ch := Readkey;

10


Gv Ths: Vũ Văn Nam

Các bài toán về mảng một chiều và ma trận...

Until Ch in['1'..'5'];
Case Ch Of
'1' : Begin
doctep(a1,hangA,cotA);
doctep(a2,hangB,cotB);
end;
'2' :congmt;
'3' :nhanmt;
'4':
Begin
doctep(a1,hangA,cotA);
writeln;
write('Det= ',det( a1,hangA):4:2);writeln;
chuyenvi(a1,a,hangA,cotA);
xuat(a,cotA,hangA,'chv.txt');
matrannd(a,d,hangA,cotA);
xuat(d,hangA,cotA,'ngdao.txt');
end;
End;

Until Ch = '5'
End;
{************ CHUONG TRINH CHINH ***********}
BEGIN
ClrScr;
Repeat
Repeat
ClrScr;

11


Gv Ths: Vũ Văn Nam
Writeln('

Các bài toán về mảng một chiều và ma trận...
MENU CHINH');

Writeln(' 1-Mang mot chieu');
Writeln(' 2-MA tran');
Writeln(' 3-Ket thuc');
Writeln;
Ch := Readkey;
Until ch in['1'..'3'];
Case Ch Of
'1' : mang1;
'2' : mang2;
End;
Until Ch = '3';
END.

readln;
end.

12



×