//bai 75: In cac phan tu nam tren hai duong cheovoid Xuat2duongcheoint a[][MAX],int dong, int cot... return S1;} //bai 85: Tinh tong cac so hoan thien trong ma tran so nguyengiai rieng /
Trang 1Tài liệu kỹ thuật lập
trình nâng cao
Ma trận
Trang 2//Nhap mang 2 chieu tu ban phim
void NhapMaTranTuBanPhim(int a[][MAX], int &d, int &c)
cout<<"Nhap phan tu ["<<i<<"]["<<j<<"]= ";cin>>a[i][j];
}
}
//Bai 71: Nhap mang hai chieu ngau nhien
void NhapMaTranNgauNhien(int a[][MAX], int &d, int &c)
Trang 3a[i][j]=rand() %21;
}cout<<"Da tao xong ma tran";
cout<<setw(4)<<a[i][j];
}cout<<endl;
Trang 4//Bai 73: Nhap ma tran cac so nguyen duong(nhap sai bao loi khongchon hap)
do{
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)
//bai 74: In cac phan tu co ki so tan cung la 5
void tancungla5(int a[][MAX], int dong, int cot)
Trang 5//bai 75: In cac phan tu nam tren hai duong cheo
void Xuat2duongcheo(int a[][MAX],int dong, int cot)
Trang 6cout<<"Chuong trinh mang hai chieu:\n\n";
cout<<"a.Nhap ma tran tu ban phim\n";
cout<<"b.Nhap ma tran ngau nhien\n";
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";
Trang 7cout<<"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){
Trang 8for(int j=0; j<c; j++){
cout<<"Nhap ptu ["<<i<<"]["<<j<<"] =";
cin>>a[i][j];
}}
void NhapMaTranNN(int a[][MAX],int &d,int &c)
//bai 80: Tinh tong cac phan tu tren cung mot dong
int TongDongK(int a[][MAX],int c,int k)
//bai 81: Tinh tong cac phan tu tren cung mot cot
int TongCotK(int a[][MAX],int d,int k)
{
int S=0;
for(int i=0; i<d; i++)
Trang 9return S;
}
//bai82: Tinh tong cac ptu chan trong ma tran
int TongChan(int a[][MAX],int d,int c)
{
int S=0;
for(int i=0; i<d; i++)
for(int j=0; j<c; j++){
if(a[i][j]%2==0)
S=S+a[i][j];
}return S;
Trang 10return S1;
}
//bai 85: Tinh tong cac so hoan thien trong ma tran so
nguyen(giai rieng)
//bai 86: Tinh tong cac phan tu lon nhat tren moi dong
int TongMaxDong(int a[][MAX], int d, int c)
cout<<"Chuong trinh mang 2 chieu\n";
cout<<"a.Nhap ma tran ngau nhien\n";
cout<<"b.Nhap ma tran tu ban phim\n";
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:
case 'a': NhapMaTranNN(a,d,c); break;
case 'b': NhapMaTran(a,d,c); break;
case 'c': XuatMaTran(a,d,c); break;
case 'd':
{
Trang 12Bai 86: Tinh tong cac gia tri lon nhat tren moi dong
//Tong cac phan tu lon nhat tren moi dong
int TongPTLNDong(int a[][MAX], int d, int c)
if(a[i][j]<a[mincot][j])
mincot=i;
}
Trang 13int min, tong=0;
for(int i=0; i<d ;i++)
{
k=i;
min=a[k][0];
for(int j=1; j<=d-1-i; j++){
if(a[k+1][j]<min)
min=a[k+1][j];
k++;
}tong+=min;
}
Trang 14vtd = i;
vtc = j;
}}
Trang 15for(int i=0; i<d; i++)
{
for(int j=0; j<c; j++)
if(a[i][j]<a[vtd][vtc]){
vtd=i;
vtc=j;
}}
cout<<"Phan tu lon nhat la : "<<a[vtd][vtc]<<endl;
cout<<"Nam o vi tri a["<<vtd<<","<<vtc<<"]";
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){
Trang 16return true;
}return false;
Trang 17minc=j;
mind=i;
}cout<<a[mind][minc];
cout<<"CHUONG TRINH MANG HAI CHIEU\n\n\n";
cout<<"a.Nhap mang tran ngau nhien\n";
cout<<"b.Nhap ma tran tu ban phim\n";
cout<<"c.Xuat ma tran\n";
cout<<"d.Tim ptu lon nhat\n";
cout<<"e.Tim ptu nho nhat\n";
cout<<"f.Tim ptu chan cuoi\n";
cout<<"g.Tim ptu am le lon nhat\n";
cout<<"h.Tim phan tu chan duong nho nhat\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;
Trang 19//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;
Trang 21for(int i=0; i<d; i++)
for(int j=0; j<c; j++){
cout<<"Nhap ptu ["<<i<<"]["<<j<<"] =";
cin>>a[i][j];
}}
void NhapMaTranNN(int a[][MAX],int &d,int &c)
Trang 22for (int i=0; i<d; i++)
{
for (int j=0; j<c; j++){
if (sohoanthien(a[i][j])==1){
return a[i][j];
}}
if (sohoanthien(a[i][j])==1){
SoHoanThienMax = (SoHoanThienMax>a[i][j])?SoHoanThienMax:a[i][j];
}}
cout<<"Chuong trinh mang 2 chieu\n";
cout<<"a.Nhap ma tran ngau nhien\n";
cout<<"b.Nhap ma tran tu ban phim\n";
Trang 23case 'a': NhapMaTranNN(a,d,c); break;
case 'b': NhapMaTran(a,d,c); break;
case 'c': XuatMaTran(a,d,c); break;
}cout<<"\n\n\n\n";
Trang 24for(int i=1; i<k; i++)
//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;
Trang 28//ham tim cot co tong nho nhat trong ma tran
int SearchSumMin(int A[][MAX], int n, int &d, int &c)
d=i;
c=j;
min=s2;
}}
Trang 29cout<<"Nhap phan tu thu ["<<i<<"]["<<j<<"]= ";cin>>a[i][j];
}}
void NhapMaTranNgauNhien(int a[][MAX], int &d, int &c)
Trang 30//bai 103 dem cac gia tri le trong ma tran cac so nguyen
int DemGTLe(int a[][MAX], int d, int c)
Trang 32//dem cac cuc tri trong ma tran cac so nguyen
int Dem_Cuc_Tri(int a[][MAX], int d, int c)
Trang 33cout<<"4.Dem gia tri le\n";
cout<<"5.Dem cac gia tri nho hon x\n";
cout<<"6.Dem cac phan tu la so nguyen to\n";
cout<<"7.Dem phan tu cuc dai\n";
cout<<"8.Dem phan tu cuc tieu\n";
cout<<"9.Dem cuc tri\n";
cout<<"10.Dem cac so hoan thien trong ma tran\n";
Trang 35cout<<"Nhap ptu ["<<i<<"]["<<j<<"] =";
cin>>a[i][j];
}}
void NhapMaTranNN(int a[][MAX],int &d,int &c)
int temp=a[i];
a[i]=a[j];
Trang 36}}
void SapxepMaTranTang(int a[][MAX], int d, int c)
bai 112: Sap xep tat ca ca dong deu tang dan
void SapXepDongTangDan(int a[][MAX], int d, int c)
{
Trang 37int tam=a[i][j];
a[i][j]=a[i][k];
a[i][k]=tam;
}}
}
}
bai 113: sap xep tat ca ca cot giam dan
void SapXepCotGiamDan(int a[][MAX], int d, int c)
{
for(int i=0; i<d-1; i++)
for(int j=0;j<c;j++){
for(int k=i+1; k<d; k++){
if(a[i][j]<a[k][j]){
int tam=a[i][j];
a[i][j]=a[k][j];
a[k][j]=tam;
}}
a[i][j]=b[l];
c[l++]=a[j++][i++];
Trang 38cout<<"CHUONG TRINH MANG HAI CHIEU\n\n\n";
cout<<"a.Nhap mang tran ngau nhien\n";
cout<<"b.Nhap ma tran tu ban phim\n";
cout<<"c.Xuat ma tran\n";
cout<<"d.Sap xep ma tran tang:\n";
cout<<"e.Sap xep ma tran giam:\n";
cout<<"f.Sap xep dong tang dan\n";
cout<<"g.Sap xep cot giam dan\n";
cout<<"h.Tong gia tri nho nhat\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': SapxepMaTranTang(a,d,c); break;
case 'e': SapxepMaTranGiam(a,d,c); break;
case 'f': SapXepDongTangDan(a,d,c); break;
case 'g': SapXepCotGiamDan(a,d,c); break;
case 'z': exit(1);
}cout<<"\n\n\n\n";
Trang 39k=i;
}}
if(TongPTLNDong(a,d,c)==1)a[i][j]=a[i+1][j];
}d ;
max=s1;
k=i;
Trang 40min=s1;
k=i;
}}
void DoiCho(int a[][MAX], int d, int c, int &k)//(Giang viết){
for(int j=0; j<c; j++)
HoanVi(a[SumMax(a,d,c,k)][j],a[SumMin(a,d,c,k)][j]);}
Trang 42dần (Không cho phép sắp xếp trên dãy a)
4)cho ma trận số nguyên cấp n*m cài đặt các hàm thực hiện các thao tác trên ma trận
c) xóa dòng và cột chứa phân tử nhỏ nhất
d) nhập số nguyên dương k (k<n) và dãy có n số thực, chèn dãy đó vào dòng k
e) nhập số nguyên dương K (k<m) và dãy có m số thực, chèn dãy đó vào cột k
f) hoán vị các dòng sao cho tổng giá trị của từng dòng giảm từ trên xống
7) nhập ma trận ký tự, vuông cấp n thực hiện các thao tác:
a) đổi các ký tự anphabe thành ký tự in hoa
b) cho biết dòng nào có nhiu nguyên âm nhất ( nếu có 2 dòng thì in dòng phía trên)
Trang 43327 Tổng các giá trị nằm trên biên của ma trận
Trang 47399 Dịch trái xoay vòng theo chiều kim đồng hồ các giá trị nằm trên biên
411 Xuất giá trị chẵn trong ma trận theo thứ tự giảm dần
412 Xuất các số nguyên tố theo thứ tự tăng dần
413 Sắp xếp theo yêu cầu: Dòng có chỉ số chẵn tăng dần, lẻ giảm dần
Trang 48mảng phụ và ko sử dụng mảng phụ (như bài 415 thêm điều kiện xét ptử chẵn và đổi dấu > thành <)
418 Sắp xếp âm tăng dần, dương giảm dần, 0 giữ nguyên
http://taiachau.com/4rum/viewtopic.php?f=88&t=807
419 Sắp xếp chẵn tăng, lẻ giảm (như bài 418 chỉ sửa lại điều kiện)
420 Sắp xếp các giá trị nằm trên biên ma trận tăng dần
for(int i=0;i<n;i++)
int temp = a[i][0];
for (int j=0;j<m-1;j++)
a[i][j] = a[i][j+1]
a[i][m-1]= temp
Trang 49Cho ma trận vuông cấp n có 2n-1 đường chéo song song với đường
chéo phụ được đặt tên là 0 đến 2*n-2 Hãy cho biết đường chéo nào có tổng lớn nhất ?
#include<stdio.h>
int main()
{
int n,tong,max,A[10][10],i,j,k;
printf("nhap vao cap cua ma tran:");