Breaking NewsLoading... Monday, December 5, 2011 Home » Ma trận » Tổng hợp code các hàm về Mảng 2 Chiều Tổng hợp code các hàm về Mảng 2 Chiều Việt Trương 12/05/2011 12:59:00 PM Ma trận PHẦN 1: Các câu lệnh duyệt mảng 2 chiều thường gặp*Ghi chú: n là số dòng, m là số cột-Nhập mảngfor(int i=0;i<n;i++)for(int j=0;j<m;j++){ cout<<"nhap vao phan tu thu "<<i<<j<<": ";cin>>a[i][j]; }-Xuất mảngfor(int i=0;i<n;i++){ for(int j=0;j<m;j++)cout<<a[i][j]<<" "; cout<<endl; }*Một số câu lệnh chỉ có trong ma trận vuông: ( số dòng bằng số cột n=m):-Xuất các phần tử nằm trên đường chéo chínhfor(int i=0;i<n;i++)cout<<a[i][i];-Xuất các phần tử nằm phía trên đường chéo chính(còn gọi là tam giác trên)for(int i=0;i<n;i++) for(int i=0;i<n;i++) for(int j=0;j<i;j++) OR for(int j=i+1;j<n;j++)cout<<a[j][i]<<" "; cout<<a[i][j]<<" "; -Xuất các phần tử nằm phía dưới đường chéo chính( còn gọi là tam giác dưới)for(int i=0;i<n;i++) for(int j=0;j<i;j++) cout<<a[i][j]<<" ";-Xuất các phần tử nằm trên đường chéo phụfor(int i=0;i<n;i++)cout<<a[i][n-1-i)<<” “;-Xuất các phần tử nằm phía trên đường chéo phụfor(int i=0;i<n;i++) for(int i=0;i<n;i++)for(int j=0;j<n-1-i;j++) OR for(int j=n-i;j<n;j++) cout<<a[i][j]<<" ";cout<<a[n-1-j][n-1-i]<<" ";-Xuất các phần tử nằm phía dưới đường chéo phụfor(int i=0;i<n;i++) for(int j=n-i;j<n;j++) cout<<a[i][j]<<" ";PHẦN 2: Một số bài tập tham tham khảo1. viết hàm tính tổng các phần tử trên cùng một dòng.void tongpttrendong(int a[][100],int n,int m){ for(int i=0;i<n;++i) {int S=0;for(int j=0;j<m;++j) S+=a[i][j]; cout<<"dong "<<i<<" la: "<<S<<endl; }}2. viết hàm tính tổng các phần tử trên cùng một cộtvoid tongpttrencot(int a[][100],int n,int m){for(int i=0;i<m;i++) {int s=0;for(int j=0;j<n;j++) s=s+a[j][i]; cout<<"cot "<<i<<" la: "<<s<<endl; }}3. viết hàm tính tổng các phần tử thuộc đường chéo chính trong ma trận vuông. int tongptdcchinh(int a[][100],int n,int m){int s=0;for(int i=0;i<n;i++) s=s+a[i][i];return s;}4. Viết hàm tính tổng các giá trị lớn nhất trên mỗi dòng.int maxdong(int a[][100],int n,int m){int s=0;for(int i=0;i<n;i++) {int max=a[i][0];for(int j=1;j<m;j++)if(a[i][j]>max) max=a[i][j]; s=s+max; }return s; }5. Viết hàm tính giá trị trung bình của các phần tử nhỏ nhất trên mỗi cột.float tbmincot(int a[][100],int n,int m){float s=0;for(int i=0;i<m;i++) {int min=a[0][i];for(int j=1;j<n;j++)if(a[j][i]<min) min=a[j][i]; s=s+min;}return (float)s/m;}6. Viết hàm tính tổng các giá trị nhỏ nhất thuộc từng đường chéo song song với đường chéo chínhchính.int tongminssdcchinh(int a[][100],int n,int m){int s=0;for(int i=1;i<n;i++) { int m1=32768,m2=32768;for(int j=i;j<n;j++) {if(a[j][j-i]<m1) m1=a[j][j-i];if(a[j-i][j]<m2) m2=a[j-i][j]; } s=s+m1+m2; }return s;}7. Viết hàm tìm vị trí phần tử lớn nhất trong ma trận số nguyênvoid vtphantumax(int a[][100],int n,int m){int d=0,c=0;for(int i=0;i<n;i++) for(int j=1;j<m;j++)if(a[d][c]<a[i][j]){ d=i; c=j; }cout<<"dong thu "<<d<<" cot thu "<<c;}8. Viết hàm tìm vị trí phần tử chẳn cuối cùng trong mảngvoid vtchancuoicung(int a[][100],int n,int m){int i,j;for( i=n-1;i>=0;i--){for(j=m-1;j>=0;j--) if(a[i][j]%2==0)break;break;}cout<<"dong thu "<<i<<" ,cot thu "<<j;}9. Viết hàm tìm phần tử âm lẻ và lớn nhất trong ma trậnint ptamle(int a[][100],int n,int m){for(int i=0;i<n;i++) for(int j=0;j<m;j++) if((a[i][j])<0 && (a[i][j])%2==-1)return a[i][j];return 0;}int ptamlemax(int a[][100],int n,int m){int max=ptamle(a,n,n);if(max!=0) { for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(a[i][j]>max && a[i][j]<0 && a[i][j]%2==-1 ) max=a[i][j]; }return max;}10. Viết hàm tìm phần tử chẳn dương và nhỏ nhất trong ma trậnint ptchanduong(int a[][100],int n,int m){for(int i=0;i<n;i++)for(int j=0;j<m;j++) if((a[i][j])>0 && (a[i][j])%2==0)return a[i][j]; return 0;}int ptchanduongmin(int a[][100],int n,int m){ int min=ptchanduong(a,n,m); if(min!=0) { for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(a[i][j]<min && a[i][j]>0 && a[i][j]%2==0 ) min=a[i][j]; }return min;}11. Viết hàm tìm phần tử lớn nhất trên đường chéo chính của ma trận vuôngint maxdcchinh( int a[],int n) {int max=a[0][0];for(int i=1;i<n;i++) if(a[i][i]>max) max=a[i][i];return max; }12. Viết hàm hoán vị 2 dòng, hoán vị 2 cột trong ma trậnvoid hoanvi(int &a,int &b){int t=a; a=b; b=t;}void hoanvicot(int a[][100],int n,int m,int c1,int c2){if((c1>=0 && c1<m)&&(c2>=0 && c2<m)) {for(int i=0;i<n;i++) hoanvi(a[i][c1],a[i][c2]); }xuat(a,n,m);}void hoanvidong(int a[][100],int n,int m,int d1,int d2){if((d1>=0 &&d1<n) &&(d2>=0 && d2<n)) { for(int j=0;j<m;j++) hoanvi(a[d1][j],a[d2][j]); } xuat(a,n,m);}13. Viết hàm xóa một dòng, xóa một cột trong ma trậnvoid xoacot(int a[][100],int n,int &m,int c){ if(c>=0 && c<m) {for(int i=0;i<n;i++)for(int j=c;j<m-1;j++) a[i][j]=a[i][j+1]; m--;}xuat(a,n,m);}void xoadong(int a[][100],int &n,int m,int d){if(d>=0 &&d<n) {for(int i=d;i<n-1;i++)for(int j=0;j<m;j++) a[i][j]=a[i+1][j]; n--; }}14. Viết hàm chèn một dòng, chèn một cột trong ma trậnvoid chencot(int a[][100],int n,int &m,int c){if(c>=0 && c<m) {for(int i=0;i<n;i++)for(int j=m;j>c;j--) a[i][j]=a[i][j-1]; m++;for(int i=0;i<n;i++) { cout<<"nhap phan tu dong "<<i<<" "; cin>>a[i][c]; } }}void chendong(int a[][100],int &n,int m,int d){if(d>=0 &&d<n) { for(int i=n;i>d;i--) for(int j=0;j<m;j++) a[i][j]=a[i-1][j]; n++; for(int j=0;j<m;j++) { cout<<"nhap phan tu cot "<<j<<" "; cin>>a[d][j]; } }}15. Viết hàm tìm phần tử chẳn dương nhỏ nhất trong ma trận(Câu 10)int ChanDuongMin(int a[][Max],int d, int c){int min=-1, i, j;for(i=0;i<d;i++)for(j=0;j<c;j++)if(a[i][j]%2==0 && a[i][j]>0) {if(min==-1) min=a[i][j];elseif(a[i][j]<min) min=a[i][j]; }return min;}16 .Viết hàm tìm vị trí xuất hiện đầu tiên của x trong ma trậnvoid timx(float a[][100],int d,int c,float x,int &xd,int &xc){ xd=xc=-1;for(int i=0;i<d;i++) for(int j=0;j<c;j++)if(a[i][j]==x) { xd=i; xc=j;return; }17 .Viết hàm xóa dòng có tổng lớn nhất của ma trận số thực(Trường hợp chỉ có một dòng có tổng lớn nhất)void xoadongtonglonnhat(float a[][100],int &d,int c){float max,tong;int dong; tong=0;for(int j=0;j<c;j++) tong+=a[0][j]; max=tong; dong=0;for(int i=1;i<d;i++) { tong =0;for(int j=0;j<c;j++) tong+=a[i][j];if(tong>max) { max=tong; dong=i; } } for(int i=dong;i<d;i++) {for(int j=0;j<c;j++) a[i][j]=a[i+1][j]; d--; }}18 .Viết hàm sắp xếp ma trận tăng dần từ trái sang phải từ trên xuống dướivoid Interchangersort(int a[][Max],int d,int c){ for(int i=0;i<c*d-1;i++) for(int j=i+1;j<c*d;j++) if(a[i/c][i%c]>a[j/c][j%c]) hoanvi(a[i/c][i%c],a[j/c][j%c]);}void hoanvi(int &a,int &b){int t=a; a=b; b=t;}*HÀM KHỞI TẠO MẢNG 2 CHIỀUMảng Tăng: void nhap(int a[][max],int d,int c) { srand((unsigned) time(NULL)); int t=abs(rand()%100); for(int i=0;i<d;i++) for(int j=0;i<c;j++) { a[i][j]=t+abs(rand()%100); t= a[i][j]; } }Mảng Giảm: void nhap(int a[][max],int d,int c) { srand((unsigned) time(NULL)); int t=abs(rand()%100); for(int i=d-1;i>=0;i--) for(int j=c-1;i>=0;j--) { a[i][j]=t+abs(rand()%100); t= a[i][j]; } }19.Viết hàm tính tích 2 ma trậnvoid Output_Matrix(int a[][100], int d, int c){for(int i=0; i<d; i++){ for(int j=0; j<c; j++) cout<<a[i][j]<<"\t"; cout<<endl<<endl;}}// A(m,n) x B(n,k) = C(m,k)// A(da, ca) x B(db,cb) = C(da,cb)void Tich_Matrix(int a[][100], int b[][100], int ab[][100], int da, int ca, int db, int cb){int i, j, k;if(ca != db) cout<<"Hai ma tran khong thoa tinh chat NHAN MA TRAN!";else{ cout<<"\n\nTich cua 2 Ma tran la: \n\n"; for(i=0; i<da; i++) for(j=0; j<cb; j++) ab[i][j]=0; for(i=0; i<da; i++) for(j=0; j<cb; j++) for(k=0; k<ca; k++) ab[i][j]+=a[i][k]*b[k][j]; Output_Matrix(ab, da, cb);}} 20.Viết hàm tính tổng 2 ma trậnvoid Output_Matrix(int a[][100], int d, int c){for(int i=0; i<d; i++){ for(int j=0; j<c; j++) cout<<a[i][j]<<"\t"; cout<<endl<<endl;}}void Sum_Matrix(int a[][100], int b[][100], int ab[][100], int da, int ca, int db, int cb){if(da != db || ca != cb) cout<<"Hai ma tran khong thoa tinh chat cua CONG MA TRAN!";else{ cout<<"\n\nTong cua 2 Ma tran la: \n\n"; for(int i=0; i<da; i++) for(int j=0; j<ca; j++) ab[i][j]=a[i][j]+b[i][j]; Output_Matrix(ab, da, ca);}} 20.Tính tổng các phần tử trên biên ma trậnlong tong_bien(int a[][100],int d,int c){ long tong=0; for(int i=0;i<c;i++) { tong += a[0][i]; tong += a[d-1][i]; } for(int i=1;i<d-1;i++) { tong += a[i][0]; tong += a[i][c-1]; } return tong;}21.Tìm phần tử có giá trị lớn nhất trên biên ma trậnlong max_bien(int a[][100],int d,int c){ int max=a[0][0]; for(int i=0;i<c;i++) { if(max<a[0][i]) max=a[0][i]; if(max<a[d-1][i]) max= a[d-1][i]; } for(int i=1;i<d-1;i++) { if(max<a[i][0]) max=a[i][0]; if(max<a[i][c-1]) max<a[i][c-1]; } return max;}21.Ma trận ZigZag ngang#include <iostream>using namespace std;int a[100][100],d,c;void XuLy(int a[][100],int d,int c){ int dem=1; for(int i=0;i<d;i++) { if(i%2==0) for(int j=0;j<c;j++) a[i][j]=dem++; else for(int j=c-1;j>=0;j--) a[i][j]=dem++; }}void Xuat(int a[][100],int d,int c){ for(int i=0;i<d;i++) { for(int j=0;j<c;j++) if(a[i][j]>=10) cout<<a[i][j]<<" "; else cout<<" "<<a[i][j]<<" "; cout<<endl<<endl; }}void main(){ cout<<"Nhap dong: ";cin>>d; cout<<"Nhap cot: ";cin>>c; XuLy(a,d,c); cout<<"Ma tran zigzag ngang la: \n\n"; Xuat(a,d,c);} 21.Ma trận xoắn ốc theo chiều kim đồng hồ#include <iostream>using namespace std;int a[100][100],d,c;void TaoMaTran(){ int trai=0,tren=0,phai=c,duoi=d,dem=0,soluong=c*d; while(dem<soluong) { for(int i=trai;i<phai;i++) if(dem<soluong) a[tren][i]=dem++; tren++; for(int i=tren;i<duoi;i++) if(dem<soluong) a[i][phai-1]=dem++; phai--; for(int i=phai-1;i>=trai;i--) if(dem<soluong) a[duoi-1][i]=dem++; duoi--; for(int i=duoi-1;i>=tren;i--) if(dem<soluong) a[i][trai]=dem++; trai++; }}void XuatMaTran(){ for(int i=0;i<d;i++) { for(int j=0;j<c;j++) if(a[i][j]>=10) cout<<a[i][j]<<" "; else cout<<" "<<a[i][j]<<" "; cout<<endl<<endl; }}void main(){cout<<"Nhap dong,cot: ";cin>>d>>c;TaoMaTran();cout<<"Ma tran xoan oc la: \n";XuatMaTran();} Posted by Việt Trương at 12/05/2011 12:59:00 PM Email ThisBlogThis!Share to XShare to FacebookShare:
Facebook
Twitter
Google+
StumbleUpon
Digg
Delicious
LinkedIn
Reddit
Technorati
Newer Post Older Post
9 comments:
UnknownMay 17, 2014 at 6:37 PM
cái xuất các phần tử phía trên đường chéo chính và phí dưới đường chéo chính Giống nhau
ReplyDeleteRepliesReply
Việt TrươngMay 18, 2014 at 2:28 PM
@Bong Hoang Anh: 2 hàm này giống về 2 dòng for nhưng khác ở chổ cout đó bạn. bạn nhìn kĩ lại sẽ thấy một cái là cout a[j][i] một cái là cout a[i][j].
ReplyDeleteRepliesReply
UnknownOctober 18, 2015 at 8:41 PM
máy a chị cho e hỏi c free .... nó có giống thế này không hả máy a chị .. e đang yếu môn này :V
ReplyDeleteReplies
Việt TrươngOctober 19, 2015 at 5:27 PM
Mình không dùng cfree nên cũng chưa biết nó như thế nào
DeleteRepliesReply
UnknownApril 15, 2016 at 9:27 AM
giống ấy pn, cái này viết theo C++
DeleteRepliesReply
Việt TrươngApril 18, 2016 at 8:12 PM
Đúng rồi. C++
DeleteRepliesReply
Reply
Hoa NắngFebruary 17, 2017 at 8:44 AM
A Việt ơi! Mảng tăng theo cấp số nhân thì viết thế nào vậy a?Ví dụ như cấp số nhân 2 và 10 levels (lv1=2......lv10=1024)?Cảm ơn a nhé!
ReplyDeleteReplies
Việt TrươngFebruary 18, 2017 at 1:07 PM
có kèm theo điều kiện gì nữa ko bạn. Ví dụ: tăng dần theo hàng, cột hoặc ma trận đó là mxn phần tử hay ma trận vuông. Bạn cứ nêu cụ thể lên nhé. Còn nếu chỉ đơn giản là theo cấp số nhân thì khi tạo phần tử cho mảng cứ theo công thức phần tử thứ i+1 bằng phần tử thứ i*2
DeleteRepliesReply
Reply
My HongApril 21, 2025 at 11:15 PM
Tks admin đã chia sẻ !Thông tin rất hay + hữu ích cho mọi người XIN CẢM ƠN !!!kính ô tô giá rẻ
ReplyDeleteRepliesReply
Add commentLoad more... Subscribe to: Post Comments (Atom) Powered by Blogger.
Popular
Fanpage
Comments
Archive
Popular Posts
Tổng hợp Bài Tập Về Mảng Một Chiều Nhập xuất mảng 1 chiều bằng đệ quy File khaibao.h #include<iostream> using namespace std; void NhapMang(int a[],int n); void...
Tổng hợp Bài Tập Đệ Quy 1/ In đảo ngược số n nguyên dương void InDaoNguoc(int n) { if(n!=0) { cout<<n%10; InDaoNguoc(n/10); } } 2/ Đếm ...
Tổng hợp code các hàm về Mảng 2 Chiều PHẦN 1: Các câu lệnh duyệt mảng 2 chiều thường gặp *Ghi chú: n là số dòng, m là số cột -Nhập mảng f or ( int i=0;i<n;i++) fo...
BÀI NHẬP XUẤT DANH SÁCH THÔNG TIN SINH VIÊN( MÔN CTDL &TT TUẦN 5) Click Vào Đây Để Dowload
Tổng Hợp Các Bài Tập Kiểu Chuỗi Đếm có bao nhiêu khoảng trắng trong chuỗi. Nhập vào một chuỗi, hãy loại bỏ những khoảng trắng thừa trong chuỗi. Nhập vào hai chuỗi s...
Bình luận mới nhất
Blog Archive
► 2019 (60)
► November (3)
► October (45)
► April (3)
► March (9)
► 2017 (3)
► October (1)
► September (1)
► May (1)
► 2016 (2)
► December (2)
► 2015 (11)
► September (1)
► June (1)
► May (5)
► April (3)
► January (1)
► 2014 (63)
► October (19)
► August (1)
► July (20)
► June (5)
► May (1)
► April (9)
► March (8)
► 2013 (308)
► September (13)
► August (50)
► July (230)
► June (12)
► May (3)
► 2012 (30)
► September (4)
► August (20)
► May (5)
► February (1)
▼ 2011 (40)
▼ December (27)
Code một Số Hàm Thường Dùng Trong Danh Sách Liên K...
3 Ví Dụ Cơ Bản Về Nhập, Xuất, Ghi File
Nhập, Xuất Ngày Tháng Năm Và Xử Lý
Tóm Tắt Một Số Lệnh Cấu Hình Router
Tổng Hợp Các Câu Lệnh Cơ Sở Dữ Liệu
Cách Sử Dụng Hàm Trong Chuỗi Kí tự
Mọi ý kiến, thắc mắc vui lòng email về cho Việt qu...
Đếm Số Phần Tử Chẵn Danh Sách Liên Kết Đơn
Hàm Sắp Xếp Tăng Dần Danh Sách Liên Kết Đơn
Hàm Tìm Giá Trị Max Danh Sách Liên Kết Đơn
Hàm Nhập Ngẫu Nhiên Danh Sách Liên Kết Đơn
Hàm Nhập Xuất Danh Sách Liên Kết Đơn
Bài Tập Nhập Xuất Danh Sách Sinh Viên (CTDL&TT) Tu...