You are on page 1of 4

Bài tập C-asignmen1

BÀI 5

Ghi chú: mỗi bài được trình bày theo các mức khác nhau, từ dễ đến khó. Sinh viên
nên thực hiện qua từng bước để nâng cao dần kỹ năng. Tuy nhiên nếu thời gian không
cho phép thì sinh viên có thể chỉ thực hiện ở một mức mà thôi.

Các kiến thức cơ sở:


Ma trận chữ nhật A có cỡ mxn là một bảng gồm mxn số thực được bố trí như sau:
 a 11 a 12 ... a 1n 
a a 22 ... a 2n 
A=  21 (1.1)
 . . ... . 
 
a m1 a m2 ... a mn 
Khi m = n ta có ma trận A có cỡ n x n và được gọi là ma trận vuông cấp n.
Nếu 2 ma trận A và B có cùng cỡ thì có thể thực hiện phép tính tổng hai ma trận và
kết quả là ma trận C cùng cỡ với các phần tử cij = aij + bij
Nếu ma trận A có cỡ mxn và ma trận B có cỡ nxk, khi đó có thể định nghĩa ma
trận tích C có cỡ mxk và các phần tử của C có dạng:

cij = ai1b1j + ai2b2j + . . . + + ainbnj i =1,2,...m; j=1,2,...,k

MỨC 1.
Hãy khai báo hai mảng a và b (tĩnh hoặc động) có kiểu dữ liệu thực (float) để lưu các
phần tử của 2 ma trận A và B. Các mảng a, b có cỡ cực đại là nmax * nmax (nmax
được định nghĩa trước trong phần các chỉ thị tiền xử lý (sử dụng lệnh #define...). Viết
chương trình thực hiện các thao tác trên ma rrận gồm thực đơn với các mục chọn sau
đây (kết quả được hiển thị trên màn hình):
1. Nhập các ma trận A, B.
2. Hiển thị các phần tử của các ma trận A, B trên màn hình.
3. Kiểm tra điều kiện và nếu thỏa mãn thì tính tổng hai ma trận A, B.
4. Kiểm tra điều kiện và nếu thỏa mãn thì tính tích hai ma trận A, B.
5. Nhập giá trị x, sau đó thực hiện tìm kiếm xem x có xuất hiện trong ma trận A hay
không, nếu có thì ở dòng nào, cột nào.
6. Tìm phần tử nhỏ nhất và phần tử lớn nhất cùng vị trí của chúng trong ma trận A.
Z. Kết thúc.

MỨC 2.
1. Tạo một tệp MaTranA.IN là tệp văn bản gồm m+2 dòng (có thể dùng một phần
mềm soạn thảo văn bản bất kỳ nào đó, ví dụ như trình soạn thảo văn bản của C
chẳng hạn).
Dòng thứ nhất chứa 2 giá trị nguyên m và n dùng để chỉ số dòng và số cột của ma
trận A.
m dòng tiếp theo là các phần tử trên dòng tương ứng của ma trận A (mỗi dòng có n
cột).
Tạo tệp MaTranB.IN lưu dữ liệu của ma trận B.
2. Thực hiện các mục 2, 3, 4, 5, 6 trong mức 1, nhưng kết quả lưu trong tệp văn bản.
3. Liệt kê tất cả các phần tử của ma trận A theo thứ tự tăng dần.

MỨC 3.
Sau khi thực hiện mức 2 thì có thể tìm hiểu các kiến thức về phương pháp số để thực
hiện các tính toán nâng cao như tính định thức, giải hệ phương trình đại số tuyến
tính...

#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main();
{
float a[20] #include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main();
{
float a[20][20],smax;
int m,n,imax,jmax,k;
cout<<"so hang cua ma tran la :"; cin>>m;
cout<<"so cot cua ma tran la "; cin>>n;
for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
{
cout<<"a["<<i<<"],["<<J<<"j] =";
cin>>a [j];
}
smax=a[1][1];
imax=1;
jmax=1;
for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
if(smax<=a [j])
{
smax=a [j];
imax=i;
jmax=j;
}
cout<<"\n\n Matran";
cout<<setiosflags(ios::showpoint)<<setpricision(1);

for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
{
if(j==1)cout<<"\n";
cout<<a [j];
}
cout<<"phan tu lon nhat cua mang la: "<<smax<<"\n";
cout<<"hang thu: "<<imax<<"\n";
cout<<"cot thu: "<<jmax;
} [20],smax;
int m,n,imax,jmax,k;
cout<<"so hang cua ma tran la :"; cin>>m;
cout<<"so cot cua ma tran la "; cin>>n;
for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
{
cout<<"a["<<i<<"],["<<J<<"j] =";
cin>>a [j];
}

smax=a[1][1];
imax=1;
jmax=1;
for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
if(smax<=a [j])
{
smax=a [j];
imax=i;
jmax=j;
}
cout<<"\n\n Matran";
cout<<setiosflags(ios::showpoint)<<setpricision(1);

for(i=1;1<=m;++i)
for(j=1;j<=n;++j)
{
if(j==1)cout<<"\n";
cout<<a [j];
}
cout<<"phan tu lon nhat cua mang la: "<<smax<<"\n";
cout<<"hang thu: "<<imax<<"\n";
cout<<"cot thu: "<<jmax;
}