Kỹ thuật lập trình nâng cao: Ma trận doc - Pdf 17

Kĩ Thuật Lập Trình Nâng Cao
2010
Tài liệu kỹ thuật lập
trình nâng cao
Ma trận
1
Kĩ Thuật Lập Trình Nâng Cao
2010
MA TRẬN
Bai 71-79
#include <iostream>
#include <time.h>
#include <iomanip>
#define MAX 100
using namespace std;
//Nhap mang 2 chieu tu ban phim
void NhapMaTranTuBanPhim(int a[][MAX], int &d, int &c)
{
do{
cout<<"Nhap so dong (tu 1 den "<<MAX<<")= ";
cin>>d;
}while(d<1 || d>MAX);
do{
cout<<"Nhap so cot (tu 1 den "<<MAX<<")= ";
cin>>c;
}while(c<1 || c>MAX);
for(int i=0; i<d; i++)
for(int j=0; j<c; j++)
{
cout<<"Nhap phan tu ["<<i<<"]["<<j<<"]= ";
cin>>a[i][j];

{
cout<<setw(4)<<a[i][j];
}
cout<<endl;
}
}
Bai 72:tao ma tran a cac so nguyen gom 9 dong 14 cot.Trong do
phan tu a[i][j]=i*j
#include <iostream>
using namespace std;
#include <time.h>
#include <iomanip>
#define MAX 20
void mtsonguyen(int a[][MAX], int &d, int &c)
{
d=9;c=14;
for(int i=0;i<d;i++)
for(int j=0;j<c;j++)
a[i][j]=i*j;
}
void xuatmt(int a[][MAX], int d, int n)
{
for(int i=0;i<d;i++)
{
for(int j=0;j<c;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
}
void main()

cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
if(a[i][j]<0)
exit(1);
}while(a[i][j]<0);
}
}
void xuatmt(int a[][MAX], int d, int c)
{
for(int i=0;i<d;i++)
{
for(int j=0;j<c;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
}
void main()
{
int a[MAX][MAX], d, c;
nhapmt(a,d,c);
cout<<"\nMa tran vua nhap\n";
xuatmt(a,d,c);
}
//bai 74: In cac phan tu co ki so tan cung la 5
void tancungla5(int a[][MAX], int dong, int cot)
4
Kĩ Thuật Lập Trình Nâng Cao
2010
{
for(int i=0; i<dong; i++)

cout<<setw(4)<<a[i][j];
else
cout<<setw(4)<<" ";
cout<<endl<<endl;
}
}
//bai 77: In cac phan tu nam phia duoi duong cheo phu cua ma tran
vuong cac so nguyen
void XuatDuoiDuongCheoPhu(int a[][MAX],int dong, int cot)
{
for(int i=0; i<dong; i++)
{
for(int j=0; j<dong; j++)
if(i+j > dong -1)
5
Kĩ Thuật Lập Trình Nâng Cao
2010
cout<<setw(4)<<a[i][j];
else
cout<<setw(4)<<" ";
cout<<endl<<endl;
}
}
//bai 78: In cac phan tu nam phia tren duong cheo chinh cua ma
tran vuong cac so nguyen
void XuatTrenDuongCheoChinh(int a[][MAX], int dong, int cot)
{
for(int i=0; i<dong; i++)
{
for(int j=0; j<dong; j++)

cout<<"c.Xuat ma tran\n";
cout<<"d.Xuat nhung phan tu co ky so tan cung la 5\n";
cout<<"e.Xuat cac phan tu nam tren hai duong cheo\n";
6
Kĩ Thuật Lập Trình Nâng Cao
2010
cout<<"f.Xuat phan tu tren duong cheo phu\n";
cout<<"g.Xuat phan tu duoi duong cheo phu\n";
cout<<"h.Xuat phen tu tren duong cheo chinh\n";
cout<<"i.Xuat phen tu tren duong cheo chinh\n";
cout<<"z.Thoat\n";
cout<<"Moi ban chon muc: ";
cin>>chon;
switch(chon)
{
case 'a':nhapmang2chieubanphim(a,dong,cot);
break;
case 'b':NhapMaTranNN(a,dong,cot);
break;
case 'c':xuatmang2chieu(a,dong,cot);
break;
case 'd':tancungla5(a,dong,cot);
case 'e':Xuat2duongcheo(a,dong,cot);
case 'f':XuatTrenDuongCheoPhu(a,dong,cot);
case 'g':XuatDuoiDuongCheoPhu(a,dong,cot);
case 'h':XuatTrenDuongCheoChinh(a,dong,cot);
case 'i':XuatDuoiDuongCheoChinh(a,dong,cot);
case 'z':exit(1);
cout<<"\n\n\n\n\n";
}

void NhapMaTranNN(int a[][MAX],int &d,int &c)
{
srand((unsigned)time(NULL));
do
{
cout<<"Nhap so dong (tu 1 den "<<MAX<< ") : ";
cin>>d;
}while((d<1) || (d>MAX));
do
{
cout<<"Nhap so cot (tu 1 den "<<MAX<< ") : ";
cin>>c;
}while((c<1) || (c>MAX));
for(int i=0; i<d; i++)
for(int j=0; j<c; j++)
a[i][j]=rand()%100;
cout<<"\nDa tao xong ma tran";
}
void XuatMaTran(int a[][MAX],int d,int c)
{
for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
}
/* */
//bai 80: Tinh tong cac phan tu tren cung mot dong
int TongDongK(int a[][MAX],int c,int k)

tran vuong
int TongDuongCheoChinh(int a[][MAX],int d)
{
int S=0;
for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
if(i==j)
S=S+a[i][j];
}
return S;
}
//bai 84: Tinh tong cac phan tu la so nguyen to co trong ma tran
bool LaNguyenTo(int k)
{
if(k<2)
return false;
for(int i=2;i<k;i++)
if(k%i==0)
return false;
return true;
}
int TongNguyenTo(int a[][MAX],int d, int c)
{
int S1=0;
for(int i=0;i<d;i++)
{
for(int j=0;j<c;j++)
if(LaNguyenTo(a[i][j])==true)
S1=S1+a[i][j];

cout<<"c.Xuat ma tran\n";
cout<<"d.Tong ptu tren cung dong(80)\n";
cout<<"e.Tong ptu tren cung cot(81)\n";
cout<<"f.Tong cac ptu chan(82)\n";
cout<<"g.Tong duong cheo chinh(83)\n";
cout<<"h.Tong cac phan tu la so nguyen to:(84)\n";
cout<<"i.Tong cac gia tri lon nhat tren moi dong:
(86)\n";
cout<<"z.Thoat\n";
cout<<"Moi ban chon muc :";
cin>>chon;
switch(chon)
{
case 'a': NhapMaTranNN(a,d,c); break;
case 'b': NhapMaTran(a,d,c); break;
case 'c': XuatMaTran(a,d,c); break;
case 'd':
{
10
Kĩ Thuật Lập Trình Nâng Cao
2010
int k;
cout<<"Nhap dong can tinh tong : ";
cin>>k;
cout<<"Tong cac ptu trendong
"<<k<<"la:"<<TongDongK(a,c,k);
cout<<endl;
} break;
case 'e':
{

}
cout<<"\n\n\n\n";
}
}
Bai 85:Tinh tong cac so hoan thien trong ma tran cac so nguyen
bool LaSoHoanThien(int k)
{
11
Kĩ Thuật Lập Trình Nâng Cao
2010
int tong=0;
for(int i=1; i<k; i++)
if(k%i==0)
tong=tong + i;
if(tong == k)
return true;
return false;
}
int TongSoHoanThien(int a[][MAX], int d, int c )
{
int tong=0;
for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
if(LaSoHoanThien(a[i][j])== 1)
tong = tong + a[i][j];
}
return tong;
Bai 86: Tinh tong cac gia tri lon nhat tren moi dong
//Tong cac phan tu lon nhat tren moi dong

s=s + a[mincot][j];
}
return (float)s/d;
}
Bai 88: Tinh tong cac gia tri nho nhat thuoc tung duong cheo song
song voi duong cheo chinh
void InpuMatrixRandom(int A[][MAX], int &n)
{
cout<<"Enter n: ";
cin>>n;
srand((unsigned)time(NULL));
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
A[i][j]=rand()%20;
}
void OuputMatrixRandom(int A[][MAX], int n)
{
cout<<"All element random in matrix:\n";
cout<<"\n";
cout<<"\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cout<<"\t"<<A[i][j];
cout<<"\n";
cout<<"\n";
cout<<"\n";
}
}
//Tinh tong cac gia tri nho nhat thuoc tung duong cheo song song

min=a[i][k+1];
k++;
}
tong+=min;
}
return tong;
}
float TongDC_NhoNhat(int a[][MAX], int &d, int &k)
{
return TongDC_min1(a,d,k)+TongDC_min2(a,d,k);
}}
Bai 89: Tim duong cheo co tong lon nhat thuoc tung duong cheo
song song voi duong cheo phu.
Bai 90: Tim vi tri phan tu lon nhat trong ma tran cac so nguyen
void TimVTPhanTuMax(int a[][MAX],int d,int c, int &vtd, int &vtc)
{
vtd=0;
vtc=0;
for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
if(a[i][j]>a[vtd][vtc])
{
vtd = i;
vtc = j;
}
}
}
//bai 91: Tim vi tri phan tu nho nhat trong ma tran cac so nguyen
void NhoNhat(int a[][MAX],int d, int c,int &vtd,int &vtc)

if(a[i][j]%2==0)
{
vtd=i;
vtc=j;
}
}
}
//bai 93: Tim phan tu am le lon nhat trong ma tran(sai)
bool AmLeLonNhat(int a[][MAX],int d, int c,int &vtd,int &vtc)
{
vtd=vtc=0;
for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
if(a[i][j]<0 && a[i][j]%2!=0 && a[i][j]>a[vtd]
[vtc])
{
vtd=i;
vtc=j;
15
Kĩ Thuật Lập Trình Nâng Cao
2010
return true;
}
return false;
}
}
94. Viết hàm tìm phần tử chẵn dương và nhỏ nhất trong ma trận.
#include<iostream>
using namespace std;

if(chanduongdau(a,d,c,n)!=-1)
{
int minc=chanduongdau(a,d,c,n)%n;
int mind=chanduongdau(a,d,c,n)/n;
for(int i=0; i<d;i++)
for(int j=0;j<c;j++)
if(a[i][j]<a[mind][minc] && a[i][j]%2==0)
16
Kĩ Thuật Lập Trình Nâng Cao
2010
{
minc=j;
mind=i;
}
cout<<a[mind][minc];
}
else
cout<<"Khong tim thay";
}
void main()
{
int a[MAX][MAX], d, c;
srand((unsigned) time (NULL));
mtnn(a,d,c);
xuatmt(a,d,c);
minchanduong(a,d,c,n);
}
void main()
{
int a[MAX][MAX],d,c;

case 'e':
{
int vtd,vtc;
NhoNhat(a,d,c,vtd,vtc);
cout<<"Ptu nho nhat la : "<<a[vtd][vtc];
}
break;
case 'f':
{
int vtd,vtc;
ChanCuoi(a,d,c,vtd,vtc);
cout<<"Ptu chan cuoi la : "<<a[vtd][vtc];
}
break;
case 'g':
{
int vtd,vtc;
bool kq=AmLeLonNhat(a,d,c,vtd,vtc);
if(kq==true)
cout<<"Ptu am le lon nhat la : "<<a[vtd]
[vtc];
else
cout<<"Khong tim thay";
cout<<endl;
}
break;
case 'h':
{
cout<<"Phan tu chan duong nho nhat trong ma tran
la: "<<ChanDuong_NhoNhat(a,d,c);

{
for(int j=0; j<n; j++)
cout<<A[i][j]<<"\t";
cout<<"\n";
}
}
//ham kiem tra so hoan thien
bool Test_sht(int k)
{
int s=0;
for(int i=1; i<k; i++)
if(k%i==0)
s+=i;
if(s==k)
return 1;
return 0;
}
//ham tim so hoan thien dau tien trong ma tran
int SearchFirst_sht(int A[][MAX], int n, int &v, int &d)
{
for(int i=0; i<n ;i++)
for(int j=0; j<n; j++)
if(Test_sht(A[i][j]) == 1)
{
v=i;
d=j;
return A[i][j];
}
return 0;
}

cout<<"\nHasn't element SHT in matrix\n";
else
cout<<"\nElement first SHT int matrix is "<<kq<<" and
have location is ("<<v<<","<<d<<")\n";
cout<<"\n";
}
Bai 96: Tim so hoan thien lon nhat trong ma tran so nguyen(ok)
#include <iostream>
#include <iomanip>
#include <time.h>
#define MAX 100
using namespace std;
void NhapMaTran(int a[][MAX],int &d, int &c)
{
do
{
cout<<"Nhap so d (tu 1 den "<<MAX<< ") : ";
cin>>d;
}while((d<1) || (d>MAX));
do
{
cout<<"Nhap so c (tu 1 den "<<MAX<< ") : ";
cin>>c;
}while((c<1) || (c>MAX));
20
Kĩ Thuật Lập Trình Nâng Cao
2010
for(int i=0; i<d; i++)
for(int j=0; j<c; j++)
{

}
int sohoanthien(int n)
{
int tong=0;
for (int i=1 ; i<n; i++)
if(n%i==0)
tong = tong + i;
if (tong == n)
return 1;
return 0;
}
int SoHoanThienDauTien(int a[][100], int d, int c)
{
21
Kĩ Thuật Lập Trình Nâng Cao
2010
for (int i=0; i<d; i++)
{
for (int j=0; j<c; j++)
{
if (sohoanthien(a[i][j])==1)
{
return a[i][j];
}
}
}
return -1;
}
int GiaTriCanTim(int a[][100], int d, int c)
{

cout<<"Moi ban chon muc :";
cin>>chon;
22
Kĩ Thuật Lập Trình Nâng Cao
2010
switch(chon)
{
case 'a': NhapMaTranNN(a,d,c); break;
case 'b': NhapMaTran(a,d,c); break;
case 'c': XuatMaTran(a,d,c); break;
case 'd':
{
cout<<"So hoan thien lon nhat
la:\n"<<GiaTriCanTim(a,d,c)<<endl;
break;
}
case 'z':exit(1);
}
cout<<"\n\n\n\n";
}
}
Bai 97: Tim vi tri phan tu nguyen to cuoi cung trong ma tran so
nguyen
#include <iostream>
using namespace std;
#define MAX 100
#include <iomanip>
#include <time.h>
void InpuMAtrixRandom(int A[][MAX], int &n)
{

return 0;
}
//ham kiem tra so nguyen to
bool Test_snt(int k)
{
int d=0;
for(int i=1; i<=k; i++)
if(k%i==0)
d++;
if(d==2)
return 1;
return 0;
}
//ham tim so nguyen to cuoi cung trong ma tran
int SearchLast_snt(int A[][MAX], int n, int &v, int &d)
{
for(int i=n-1; i>=0 ;i )
for(int j=n-1; j>=0; j )
if(Test_snt(A[i][j]) == 1)
{
v=i;
d=j;
return A[i][j];
}
return 0;
}
Cach 2:
bool ktnt(int n)
{
if(n<2)

}
Bai 98:Tim phan tu lon nhat thuoc duong cheo chinh cua ma tran
vuong
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 10
void InpuMAtrixRandom(int A[][MAX], int &n)
{
cout<<"nhap n: ";
cin>>n;
srand((unsigned)time(NULL));
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
A[i][j]=rand()%51;
}
void OuputMAtrixRandom(int A[][MAX], int n)
{
cout<<"All element random in matrix:\n";
cout<<"\n";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
cout<<A[i][j]<<"\t";
cout<<"\n";
}
}
int SearchMax(int A[][MAX], int n)
{
int max=A[0][0];


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status