Tổng Hợp Code Các Hàm Về Mảng 2 Chiều - GÓC HỌC TẬP

Breaking News Loading... 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ảng for(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ảng for(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ính for(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ảo 1. 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ột void 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ính chí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ên void 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ảng void 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ận int 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ận int 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ông int 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ận void 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ận void 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ận void 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]; else if(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ận void 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ưới void 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ỀU Mả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();} Share: Newer Post Older Post

9 comments:

  1. 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

    ReplyDeleteReplies
      Reply
  2. 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].

    ReplyDeleteReplies
      Reply
  3. 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
    1. 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

      DeleteReplies
        Reply
    2. UnknownApril 15, 2016 at 9:27 AM

      giống ấy pn, cái này viết theo C++

      DeleteReplies
        Reply
    3. Việt TrươngApril 18, 2016 at 8:12 PM

      Đúng rồi. C++

      DeleteReplies
        Reply
    4. Reply
  4. 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
    1. 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

      DeleteReplies
        Reply
    2. Reply
  5. 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ẻ

    ReplyDeleteReplies
      Reply
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

  • ▼  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...
      • Bài Thực Hành CTDL&TT Tuần 3,4
      • Giải Bài Tập CTDL&TT Tuần 1,2
      • Bài Toán Liệt Kê + CTDL + Quy Hoạch Động + Lí Thuy...
      • Bài Thực Hành: Quản Lý Sinh Viên
      • Tài Liệu Ngăn Xếp Và Hàng Đợi
      • Tài Liệu Danh Sách Liên Kết Đơn
      • Tài Liệu Tìm Kiếm Và Sắp Xếp
      • CCNA Lab Guide
      • Tài Liệu CCNA2 Tiếng Việt (Sharing by CCI Group)
      • Cấu Hình Router Căn Bản
      • Tổng Hợp Các Bài Tập Kiểu Chuỗi
      • Tổng hợp code các hàm về Mảng 2 Chiều
      • Tổng hợp Bài Tập Về Mảng Một Chiều
      • Tổng hợp Bài Tập Đệ Quy

Tổng lượt xem

  Toggle Footer

Từ khóa » Tổng Trên Biên Ma Trận