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õ
Trang 1Lờ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 thuận tiện hơn trong việc tỡm phương phỏp giải cỏc bài toỏn
số nguyờn một cách khoa học nhanh chóng và thuận tiện
Tiểu luận cho phép ngời dùng:
1 Nhập
2 Cộng ma trận
3 Nhõn ma trận
4 Nghịch đả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ỉ
Trang 2dẫ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);
Trang 3readln(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);
Trang 4close(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;
Trang 5end;
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
Trang 6Begin
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;
Trang 7var 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;
Trang 8for 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);
Trang 9for 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 ');
Trang 10Writeln('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;
Trang 11Until 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;
Trang 12Writeln(' 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.