Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Bài tập C++ về mảng 2 chiều, các bạn chỉ giúp???

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    29

    Mặc định Bài tập C++ về mảng 2 chiều, các bạn chỉ giúp???

    Đề bài: Viết chương trình cho phép cấp phát ngẫu nhiên 1 ma trận (2 chiều) các số nguyên.Sau đó:
    1. Xuất mảng vừa nhập.
    2. Tìm phần tử lớn nhất của ma trận.
    3. Xuất các phần tử là số nguyên tố.
    4. Tìm phần tử lớn nhất thỏa điều kiện chia hết cho 7.
    5. Tính trung bình cộng các phần tử trên cột lẻ và chia hết cho 3.
    Bài giải(sai oy` ^^). Hic, nó báo lỗi từa lưa hết.
    C++ Code:
    1. #include<iostream.h>
    2. #include<math.h>
    3. void nhapmang(int **&a, int m, int n);
    4. void xuatmang(int **&a, int m, int n);
    5. void maxmang(int **&a, int m, int n);
    6. void songuyento(int **&a, int m,int n);
    7. int gtdautienchiahet7(int **&a, int m, int n);
    8. int giatricantim(int **&a, int m, int n);
    9. int cotlechiahet3(int **&a, int m, int n);
    10. int main()
    11. {
    12.     int m,n;
    13.     int **&a;
    14.     cout<<"Nhap vao so hang cua ma tran:";
    15.     cin>>m;
    16.     cout<<"Nhap vao so cot cua ma tran:";
    17.     cin>>n;
    18.     cout<<"\n Nhap vao phan tu cua ma tran:"<<nhapmang(a,m,n);
    19.     cout<<"\n Ma tran vua nhap la:"<<xuatmang(a,m,n);
    20.     cout<<"\n Phan tu lon nhat cua ma tran:"<<maxmang(a,m,n);
    21.     cout<<"\n Cac so nguyen to trong ma tran vua nhap:"<<songuyento(a,m,n);
    22.     cout<<"\n Gia tri lon nhat chia het cho 7:"<<giatricantim(a,m,n);
    23.     cout<<"\n Trung binh cong cua cac pt tren cot le chia het cho 3 la:"
    24.         <<cotlechiahet3(a,m,n);
    25.     return 0;
    26. }
    27. void nhapmang(int **&a, int m, int n)
    28. {
    29.     for(int i=0; i<=m; i++)
    30.         for(int j=0; j<=n; j++)
    31.         cout<<"a["<<i<<"]"<<"["<<j<<"]="<<" ";
    32.         cin>>a[i][j];
    33. }
    34. void xuatmang(int **&a, int m, int n)
    35. {
    36.     for(int i=0; i<=m; i++)
    37.         for(int j=0; j<=n; j++)
    38.         cout<<"Mang vua nhap la:"<<" ";
    39.         cout<<a[i][j];
    40. }
    41. void maxmang(int **&a, int m, int n)
    42. {
    43.     int max=a[0][0];
    44.     for(int i=0; i<=m; i++)
    45.         for(int j=0; j<=n; j++)
    46.         if(max<a[i][j])
    47.             a[i][j]=max;
    48.             cout<<a[i][j];
    49.        
    50. }
    51. void songuyento(int **&a, int m,int n)
    52. {
    53.     int max=maxmang(a,m,n);
    54.     for(int i=0; i<=m; i++)
    55.         for(int j=0; j<=n; j++)
    56.         if(a[i][j]%sqrt(max) !=0)
    57.         cout<<"so nguyen to la:"<<a[i][j];
    58. }
    59. int gtdautienchiahet7(int **&a, int m, int n)
    60.     {
    61.         for(int i=0; i<=m; i++)
    62.             for(int j=0; j<=n; j++)
    63.             if(a[i][j]%7==0)
    64.             return a[i][j];
    65.     }
    66. int giatricantim(int **&a, int m, int n)
    67. {
    68.     int max7=gtdautienchiahet7(a,m,n);
    69.     if(max7==0)
    70.     {
    71.         return 0;
    72.     }
    73.     for(int i=0; i<=m; i++)
    74.         for(int j=0; j<=n; j++)
    75.             if(a[i][j]%7==0)
    76.                 max7==(max7>a[i][j])?max7:a[i][j];
    77.     return max7;
    78. }
    79. int cotlechiahet3(int **&a, int m, int n)
    80. {
    81.     int s=0;
    82.     if(n%2!=0)
    83.     {
    84.         for(int i=0; i<=m; i++)
    85.             for(int j=0; j<=n; j++)
    86.                 if(a[i][j]%3=0)
    87.                     s=+a[i][j];
    88.     }
    89.     return s;
    90. }
    Đã được chỉnh sửa lần cuối bởi itthuyloi : 01-04-2009 lúc 01:07 AM.
    Bán Sim ngày sinh cho ace nào sinh ngày 9/2/889 nè, viettel nha 09.72.76.9.2.89 cần thì liên hệ 01263.599.866 nhé!

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Nhìn qua mình thấy một vài lỗi:
    C++ Code:
    1. cout<<"\n Nhap vao phan tu cua ma tran:"<<nhapmang(a,m,n);
    sửa
    C++ Code:
    1. cout<<"\n Nhap vao phan tu cua ma tran:";
    2. nhapmang(a,m,n);
    Các chỗ dưới sửa như thế nhé
    Ngoài ra còn mấy chỗ vòng for thì bạn nên cho cái ngoặc vào
    VD
    C++ Code:
    1.     for(int i=0; i<=m; i++)
    2.         for(int j=0; j<=n; j++)
    3.         {                      /////them cai nay
    4.             cout<<"a["<<i<<"]"<<"["<<j<<"]="<<" ";
    5.             cin>>a[i][j];
    6.         }                     ////
    Tự sửa thêm đi bạn nhé.
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Nhìn tổng quan nhé,

    Bạn dùng con trỏ thì phải cấp phát, nếu không cấp phát như kia thì không ổn đâu.

    Demo cho bạn hàm cấp phát và hàm xóa.

    C Code:
    1. int AllocMatrix(int **(&a), int m, int n)
    2. {
    3.      a = new int* [m];
    4.      if (a==NULL) return 0;
    5.      for (int i=0; i< m; ++i)
    6.      {
    7.           a[i] = new int [n];
    8.           if (a[i]==NULL) return 0;
    9.      }
    10.      return 1;
    11. }
    12.  
    13. void DeleteMatrix(int **(&a), int m, int n)
    14. {
    15.      for (int i=0; i< m; ++i)
    16.           delete[] a[i];
    17.      delete[] a;
    18. }

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    28

    Nếu muốn viết kiểu class thì thế nào vậy bạn, bạn demo cho mình được không

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Trích dẫn Nguyên bản được gửi bởi duc30121989 Xem bài viết
    Nếu muốn viết kiểu class thì thế nào vậy bạn, bạn demo cho mình được không
    Chiều vừa lôi ra post trên cviet, post lại cho bạn vậy
    C++ Code:
    1. #include <iostream>
    2. #include <iomanip>
    3. using namespace std;
    4.  
    5. class Matrix
    6. {
    7. private:
    8.     int *data;
    9.     int colums;//so cot
    10.     int rows;//so hang
    11. public:
    12.     Matrix(const int r,const int c)
    13.     {
    14.         rows=r;
    15.         colums=c;
    16.         data=new int[rows*colums];
    17.     }
    18.     Matrix(const Matrix& m)//ham tao sao chep
    19.     {
    20.         rows=m.rows;
    21.         colums=m.colums;
    22.         data=new int[rows*colums];
    23.         for(int i=0;i<rows*colums;i++)
    24.             data[i]=m.data[i];
    25.     }
    26.     ~Matrix()//ham huy
    27.     {
    28.         if(data!=NULL)
    29.         {
    30.             delete[] data;
    31.             data=NULL;
    32.         }
    33.     }
    34.     void SetMatrix(int i,int j,const int x)//nhap cac phan tu cho mang
    35.     {
    36.         data[i*colums+j]=x;
    37.     }
    38.     int GetMatrix(int i,int j)//lay ra 1 phan tu cua ma tran
    39.     {
    40.         return data[i*colums+j];
    41.     }
    42.     //thay doi kich thuoc ma tran
    43.     void resize(int r,int c)
    44.     {
    45.         delete[] data;
    46.         rows=r;
    47.         colums=c;
    48.         data=new int[r*c];
    49.     }
    50.     //toan tu gan 2 ma tran
    51.     Matrix &operator=(Matrix& m)
    52.     {
    53.         int r=m.rows;
    54.         int c=m.colums;
    55.         resize(r,c);
    56.         for(int i=0;i<r*c;i++)
    57.             data[i]=m.data[i];
    58.         return *this;
    59.     }
    60.     //nap chong toan tu cong 2 ma tran
    61.     friend Matrix operator+(const Matrix& m1,const Matrix& m2)
    62.     {
    63.         if (m1.rows!=m2.rows || m1.colums!=m2.colums)
    64.         {
    65.             cout<<"\nKhong the cong 2 ma tran";
    66.             cin.ignore(1);
    67.             exit(1);
    68.         }
    69.         else
    70.         {
    71.             int r=m1.rows;
    72.             int c=m1.colums;
    73.             Matrix m(r,c);
    74.             for(int i=0;i<r*c;i++)
    75.                 m.data[i]=m1.data[i]+m2.data[i];
    76.             return m;
    77.         }
    78.     }
    79.     friend Matrix operator*(const Matrix& m1,const Matrix& m2)
    80.     {
    81.         if (m1.rows!=m2.rows || m1.colums!=m2.colums)
    82.         {
    83.             cout<<"\nKhong the cong 2 ma tran";
    84.             cin.ignore(1);
    85.             exit(1);
    86.         }
    87.         else
    88.         {
    89.             int r=m1.rows;
    90.             int c1=m1.colums;
    91.             int c2=m2.colums;
    92.             Matrix m(r,c2);
    93.             for (int i=0;i<r;i++)
    94.                 for(int j=0;j<c2;j++)
    95.                 {
    96.                     m.data[i*c2+j]=0;
    97.                     for(int k=0;k<c1;k++)
    98.                         m.data[i*c2+j]+=m1.data[i*c1+k]*m2.data[k*c2+j];;
    99.                 }
    100.             return m;
    101.         }
    102.     }
    103.     friend ostream& operator<<(ostream& out,const Matrix& mt)
    104.     {
    105.         for (int i=0;i<mt.rows;i++)
    106.         {
    107.             out<<"\n\n";
    108.             for(int j=0;j<mt.rows;j++)
    109.                 out<<setw(4)<<mt.data[i*mt.colums+j];
    110.         }
    111.         out<<endl;
    112.         return out;
    113.     }
    114. };
    115.  
    116. int main()
    117. {
    118.     Matrix a(3,3),b(3,3);
    119.     Matrix d(5,5),c(1,1);
    120.     //Thiet lap gia tri cho ma tran a
    121.     int i,j;
    122.     for (i=0; i<3; i++)
    123.         for (j=0; j<3; j++)
    124.             a.SetMatrix(i,j,i*3+j);
    125.     cout<<"Ma tran a="<<a;
    126.     //thiet lap b
    127.     for (i=0; i<3; i++)
    128.         for (j=0; j<4; j++)
    129.             b.SetMatrix(i,j,i+j*3);
    130.     cout<<"Ma tran b="<<b;
    131.     //tinh toan;
    132.     c = a + b;
    133.     cout << "\nc = a * b = " << endl << c;
    134.     d = c + b;
    135.     cout << "\nd= c + b = " << endl << d;
    136.     return 0;
    137. }
    Cánh Chym ứ mỏi

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    14

    Mặc định Bài tập C++ về mảng 2 chiều, các bạn chỉ giúp???

    Cho mình hỏi cái này tí:
    C++ Code:
    1. #include<stdio.h>
    2. #include<iostream.h>
    3. #include<conio.h>
    4. /*Khai bao nguyen mau ham*/
    5. void InitArray(int **A, int row, int colums);
    6. void AddArray(int **A, int **B, int row, int colum);
    7. void DisplayArray(int **A, int row, int colum);
    8. void DeleteArray(int **A, int row);
    9. void main()
    10. {
    11.     clrscr;
    12.     int **A,**B, row, colum;
    13.     cout<<"So dong:";
    14.     cin>>row;
    15.     cout<<"So cot:";
    16.     cin>>colum;
    17.     //Khoi tao cac ma tran
    18.     cout<<"Khoi tao mang A:";
    19.     InitArray(A, row, colum);
    20.     cout<<"Khoi tao mang B:";
    21.     InitArray(B, row, colum);
    22.     //Cong 2 ma tran
    23.     AddArray(A, B, row, colum);
    24.     //Hien thi ma tran ket qua
    25.     DisplayArray(A,row,colum);
    26.     //Giai phong bo nho
    27.     DeleteArray(A,row);
    28.     DeleteArray(B,row);
    29.     getch();
    30. }
    31. void InitArray(int **A, int row, int colum)
    32. {
    33.     A=new int *[row];
    34.     for(int i=0;i<row;i++)
    35.     {
    36.         A[i]=new int [colum];
    37.             for(int j=0;j<colum;j++)
    38.             {  
    39.                 cout<<"Phan tu ["<<i<<","<<j<<"]=";
    40.                 cin>>A[i][j];
    41.             }
    42.     }
    43. }
    44.  
    45. void AddArray(int **A, int **B, int row, int colum)
    46. {
    47.     for(int i=0; i<row; i++)
    48.     for(int j=0; j<colum;j++)
    49.         A[i][j] += B[i][j];
    50. }
    51. void DisplayArray(int **A, int row, int  colum)
    52. {
    53.     for(int i=0; i<row; i++)
    54.         for(int j=0; j<colum; j++)
    55.         cout<<A[i][j]<<" ";
    56.         cout<<endl;
    57. }
    58. void DeleteArray(int **A, int row)
    59. {
    60.     for(int i=0; i<row; i++)
    61.         delete []A[i];
    62.         delete [] A;
    63. }
    Ghi chú: Code này là ví dụ trong quyển GT C++ của BCVT, khi debug (dùng Cfree) thì nó không báo lỗi nhưng không tính được kết quả, tức là thao tác chỉ tới đây thôi rồi dừng lại:

    Có thể cho mình biết tại sao không! Thanks!

  7. #7
    Ngày gia nhập
    01 2009
    Bài viết
    165

    có thể nó sai ở hàm initarray ,bạn thử sửa khai báo 2 mảng động theo kiểu biến toàn cục xem

  8. #8
    Ngày gia nhập
    09 2008
    Bài viết
    1

    Hơ.Mình cũng đang làm bài này.Tiện tham khảo bài bạn thấy ít vấn đề.
    PHP Code:
    void InitArray(int **Aint rowint colum)
    {
        
    A=new int *[row];
        for(
    int i=0;i<row;i++)
        {
            
    A[i]=new int [colum];
                for(
    int j=0;j<colum;j++)
                {  
                    
    cout<<"Phan tu ["<<i<<","<<j<<"]=";
                    
    cin>>A[i][j];
                }
        }

    Thứ 1:vừa cấp phát động lại vừa nhập giá trị thì có hơi nhập nhằng
    Thứ 2:theo mình thấy việc giải phóng bộ nhớ cũng khá quan trọng.Ở đây làm hơi tùy tiện.Ăn chắc mặc bền :cấp phát xong cần kiểm tra bộ nhớ cần giải phóng không
    Thứ 3:mình đồng ý với kimduquan.Bạn tách làm 2 hàm cho dễ xem xét đồng thời làm theo biến toàn cục.Kiểu như
    PHP Code:
    int AllocMatrix(**A,int row,int colum)
    { *
    A=new int[row*colum];


    Còn nếu chơi theo kiểu con trỏ trỏ tới con trỏ như trên thì
    PHP Code:
    void InitArray(int **(&A), int rowint colum
    Đã được chỉnh sửa lần cuối bởi danmach : 28-07-2010 lúc 07:37 PM.

  9. #9
    Ngày gia nhập
    05 2010
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi danmach Xem bài viết
    Hơ.Mình cũng đang làm bài này.Tiện tham khảo bài bạn thấy ít vấn đề.
    PHP Code:
    void InitArray(int **Aint rowint colum)
    {
        
    A=new int *[row];
        for(
    int i=0;i<row;i++)
        {
            
    A[i]=new int [colum];
                for(
    int j=0;j<colum;j++)
                {  
                    
    cout<<"Phan tu ["<<i<<","<<j<<"]=";
                    
    cin>>A[i][j];
                }
        }

    Thứ 1:vừa cấp phát động lại vừa nhập giá trị thì có hơi nhập nhằng
    Thứ 2:theo mình thấy việc giải phóng bộ nhớ cũng khá quan trọng.Ở đây làm hơi tùy tiện.Ăn chắc mặc bền :cấp phát xong cần kiểm tra bộ nhớ cần giải phóng không
    Thứ 3:mình đồng ý với kimduquan.Bạn tách làm 2 hàm cho dễ xem xét đồng thời làm theo biến toàn cục.Kiểu như
    PHP Code:
    int AllocMatrix(**A,int row,int colum)
    { *
    A=new int[row*colum];


    Còn nếu chơi theo kiểu con trỏ trỏ tới con trỏ như trên thì
    PHP Code:
    void InitArray(int **(&A), int rowint colum
    mình cũng đang làm bài này.Mình gặp phải 1 số vấn đề về giải phóng bộ nhớ như bạn danmach nói.Danmach có thể nói rõ hơn vấn đề này cho mình và các ae khác được không?Có dòng code demo thì tốt quá.Thanks!

  10. #10
    Ngày gia nhập
    07 2010
    Bài viết
    288

    Thứ 2:theo mình thấy việc giải phóng bộ nhớ cũng khá quan trọng.Ở đây làm hơi tùy tiện.Ăn chắc mặc bền :cấp phát xong cần kiểm tra bộ nhớ cần giải phóng không
    không hiểu ý bạn lắm. có phải ý bạn là kiểm tra bộ nhớ có được cấp phát( lỗi thiếu bộ nhớ) chăng.

Các đề tài tương tự

  1. giúp em bài tập về mảng 1 chiều
    Gửi bởi sooyoo trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 03-03-2013, 08:43 AM
  2. Cách truyền mang 1 chiều cho hàm bài con trỏ và mảng một chiều ai có thể giải thích giúp mình
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-03-2012, 09:00 AM
  3. Giúp em bài tập về mảng 1 và 2 chiều
    Gửi bởi vic_trongkhang trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-10-2009, 08:28 AM
  4. 1 bài về mảng một chiều có bạn nào có thể giúp mình được ko?
    Gửi bởi kellypham trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 05-12-2007, 04:28 AM
  5. Mảng hai chiều, ma phương. Cần giúp đỡ
    Gửi bởi cardinaltrieu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 21-03-2007, 11:26 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn