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

Đề tài: [Hỏi C++] Sửa lỗi giúp mình bài này

  1. #1
    Ngày gia nhập
    08 2012
    Bài viết
    6

    Mặc định [Hỏi C++] Sửa lỗi giúp mình bài này

    Mình có 1 đoạn code như sau, sử dụng con trỏ để khai báo ma trận trong C++ nhưng chỉ xuất hiện đc hàm Init(Nhâp) còn hàm Display(Hiển thị) thì không hiển thị được, bạn nào chỉ điểm và sửa luôn hộ mình với
    Code:
    #include <iostream>
    #include <conio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <fstream.h>
    using namespace std;
    void InitArray(int **A,int row,int 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<<"\nPhan tu ["<<i<<"]["<<j<<"] = ";
                         cin>>A[i][j];
                         if((A[i][j]!=0) && (A[i][j]!=1)) 
                         {
                                       cout<<"Loi";
                                    exit(0);  }
                        
                         }
                 }
                 return;
     }
    void DisplayArray(int **A,int row,int colum)
    {
         for(int i=0;i<row;i++)
                 for(int j=0;j<colum;j++)
                 cout<<A[i][j]<< " ";
                 cout<<endl;
                 return;
     }
    void DeleteArray(int **A,int row,int colum)
    {
         for(int i=0;i<row;i++)
                 delete [] A[i];
                 delete [] A;
                 return;
     }
    main()
    {
          int **A, row,colum;
          cout<<"- Put your Row: ";
          cin>>row;
          cout<<"- Put your Colum: ";
          cin>>colum;
          cout<<"--------Fill your Matrix------ ";
          InitArray(A,row,colum);
          cout<<"++++++This is your Matrix+++++++";
          DisplayArray(A,row,colum);
          DeleteArray(A,row,colum);  
          system("pause");
          }

  2. #2
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. #include <stdlib.h>
    4. using namespace std;
    5. int** InitArray(int **A,int row,int colum)
    6. {
    7.      A= new int*[row];
    8.      for(int i=0;i<row; i++)
    9.      {
    10.              A[i]= new int[colum];
    11.              for(int j=0;j<colum;j++)
    12.              {
    13.                      cout<<"\nPhan tu ["<<i<<"]["<<j<<"] = ";
    14.                      cin>>A[i][j];
    15.                      if((A[i][j]!=0) && (A[i][j]!=1))
    16.                      {
    17.                                      cout<<"Loi";
    18.                                      getch();
    19.                                      exit(0);  
    20.                      }
    21.                      }
    22.              }
    23.              return A;
    24.  }
    25. void DisplayArray(int **A,int row,int colum)
    26. {
    27.      cout<<endl;
    28.      for(int i=0;i<row;i++)
    29.      {
    30.              for(int j=0;j<colum;j++)
    31.              cout<<A[i][j]<< " ";
    32.              cout<<endl;
    33.      }
    34.              return;
    35.  }
    36. void DeleteArray(int **A,int row,int colum)
    37. {
    38.      for(int i=0;i<row;i++)
    39.      delete [] A[i];
    40.      delete [] A;
    41.      return;
    42.  }
    43. main()
    44. {
    45.       int **A, row,colum;
    46.       cout<<"- Put your Row: ";
    47.       cin>>row;
    48.       cout<<"- Put your Colum: ";
    49.       cin>>colum;
    50.       cout<<"--------Fill your Matrix------ ";
    51.       A=InitArray(A,row,colum);
    52.       cout<<"++++++This is your Matrix+++++++";
    53.       DisplayArray(A,row,colum);
    54.       DeleteArray(A,row,colum);  
    55.       system("pause");
    56.       }
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  3. #3
    Ngày gia nhập
    03 2012
    Bài viết
    27

    Trích dẫn Nguyên bản được gửi bởi November.Rain Xem bài viết
    Mình có 1 đoạn code như sau, sử dụng con trỏ để khai báo ma trận trong C++ nhưng chỉ xuất hiện đc hàm Init(Nhâp) còn hàm Display(Hiển thị) thì không hiển thị được, bạn nào chỉ điểm và sửa luôn hộ mình với
    Code:
    #include <iostream>
    #include <conio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <fstream.h>
    using namespace std;
    void InitArray(int **A,int row,int 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<<"\nPhan tu ["<<i<<"]["<<j<<"] = ";
                         cin>>A[i][j];
                         if((A[i][j]!=0) && (A[i][j]!=1)) 
                         {
                                       cout<<"Loi";
                                    exit(0);  }
                        
                         }
                 }
                 return;
     }
    void DisplayArray(int **A,int row,int colum)
    {
         for(int i=0;i<row;i++)
                 for(int j=0;j<colum;j++)
                 cout<<A[i][j]<< " ";
                 cout<<endl;
                 return;
     }
    void DeleteArray(int **A,int row,int colum)
    {
         for(int i=0;i<row;i++)
                 delete [] A[i];
                 delete [] A;
                 return;
     }
    main()
    {
          int **A, row,colum;
          cout<<"- Put your Row: ";
          cin>>row;
          cout<<"- Put your Colum: ";
          cin>>colum;
          cout<<"--------Fill your Matrix------ ";
          InitArray(A,row,colum);
          cout<<"++++++This is your Matrix+++++++";
          DisplayArray(A,row,colum);
          DeleteArray(A,row,colum);  
          system("pause");
          }
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. #include <math.h>
    4. #include <stdlib.h>
    5.  
    6. using namespace std;
    7.  
    8. void InitArray(int **A,int row,int colum)
    9. {
    10.     for(int i=0;i<row; i++)
    11.         for(int j=0;j<colum;j++)
    12.         {
    13.             cout<<"\nPhan tu ["<<i<<"]["<<j<<"] = ";
    14.             cin>>A[i][j];
    15.             if((A[i][j]!=0) && (A[i][j]!=1))
    16.             {
    17.                 cout<<"Loi"<<endl;
    18.                 exit(0);  
    19.             }
    20.        }
    21.        return;
    22.  }
    23. void DisplayArray(int **A,int row,int colum)
    24. {
    25.      for(int i=0;i<row;i++)
    26.              for(int j=0;j<colum;j++)
    27.              cout<<A[i][j]<< " ";
    28.              cout<<endl;
    29.              return;
    30.  }
    31.  
    32. main()
    33. {
    34.       int **A, row,colum;
    35.       cout<<"- Put your Row: ";
    36.       cin>>row;
    37.       cout<<"- Put your Colum: ";
    38.       cin>>colum;
    39.       A= new int*[row];
    40.       for(int i=0;i<row; i++)
    41.              A[i]= new int[colum];
    42.       cout<<"--------Fill your Matrix------ ";
    43.       InitArray(A,row,colum);
    44.       cout<<"++++++This is your Matrix+++++++";
    45.       DisplayArray(A,row,colum);
    46.       delete A;
    47.       system("pause");
    48. }

    Y!M: doxuanthangvn
    Skype: doxuanthangvnn
    Email: doxuanthang@hotmail.com

  4. #4
    Ngày gia nhập
    08 2012
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi doxuanthang Xem bài viết
    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. #include <math.h>
    4. #include <stdlib.h>
    5.  
    6. using namespace std;
    7.  
    8. void InitArray(int **A,int row,int colum)
    9. {
    10.     for(int i=0;i<row; i++)
    11.         for(int j=0;j<colum;j++)
    12.         {
    13.             cout<<"\nPhan tu ["<<i<<"]["<<j<<"] = ";
    14.             cin>>A[i][j];
    15.             if((A[i][j]!=0) && (A[i][j]!=1))
    16.             {
    17.                 cout<<"Loi"<<endl;
    18.                 exit(0);  
    19.             }
    20.        }
    21.        return;
    22.  }
    23. void DisplayArray(int **A,int row,int colum)
    24. {
    25.      for(int i=0;i<row;i++)
    26.              for(int j=0;j<colum;j++)
    27.              cout<<A[i][j]<< " ";
    28.              cout<<endl;
    29.              return;
    30.  }
    31.  
    32. main()
    33. {
    34.       int **A, row,colum;
    35.       cout<<"- Put your Row: ";
    36.       cin>>row;
    37.       cout<<"- Put your Colum: ";
    38.       cin>>colum;
    39.       A= new int*[row];
    40.       for(int i=0;i<row; i++)
    41.              A[i]= new int[colum];
    42.       cout<<"--------Fill your Matrix------ ";
    43.       InitArray(A,row,colum);
    44.       cout<<"++++++This is your Matrix+++++++";
    45.       DisplayArray(A,row,colum);
    46.       delete A;
    47.       system("pause");
    48. }
    Cho mình hỏi cái, tại sao phải chuyển gán bộ nhớ động của con trỏ về hàm main? Mình mới học con trỏ .
    @kienquach: cám ơn đoạn code của bạn , cách sửa của bạn nhanh thật, đúng là do con trỏ của mình ở hàm main k trỏ đúng địa chỉ với hàm Ini

  5. #5
    Ngày gia nhập
    04 2011
    Nơi ở
    Hà Nội
    Bài viết
    253

    nếu viết như thế này, thì liệu giá trị của con trỏ a có được thay đổi không?
    C++ Code:
    1. int **a;
    2. void Abc(int **b)
    3. {
    4.       b = new int*[10];
    5. }
    6. Abc(a); //giá trị của a được copy và gán cho b, nói cách khác lúc này b và a trỏ về cùng 1 vùng nhớ
    chắc chắn là không, chỉ có giá trị của b là thay đổi, cũng giống như bạn viết như thế này
    C++ Code:
    1. int a = 5;
    2. void Abc(int b)
    3. {
    4.    b = 10;
    5. }
    6. Abc(a); //giá trị của a vẫn là 5
    Giải pháp: tăng cấp của con trỏ b lên 1 cấp
    C++ Code:
    1. void Abc(int ***b)
    2. {
    3.  *b = new int*[10];
    4. }
    5. int **a;
    6. Abc(&a);
    hoặc sử dụng reference
    C++ Code:
    1. void Abc(int **&b)
    2. {
    3.  b = new int*[10];
    4. }
    5. int **a;
    6. Abc(a);

  6. #6
    Ngày gia nhập
    08 2012
    Bài viết
    6

    Mặc định [Hỏi C++] Sửa lỗi giúp mình bài này

    Ừ mình hiểu rồi, cám ơn , có nghĩa là dùng cách tăng cấp con trỏ lên 1 cấp để thay đổi giá trị của con trỏ cấp thấp hơn phải k

  7. #7
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Trích dẫn Nguyên bản được gửi bởi greigaz Xem bài viết
    nếu viết như thế này, thì liệu giá trị của con trỏ a có được thay đổi không?
    C++ Code:
    1. int **a;
    2. void Abc(int **b)
    3. {
    4.       b = new int*[10];
    5. }
    6. Abc(a); //giá trị của a được copy và gán cho b, nói cách khác lúc này b và a trỏ về cùng 1 vùng nhớ
    chắc chắn là không, chỉ có giá trị của b là thay đổi, cũng giống như bạn viết như thế này
    C++ Code:
    1. int a = 5;
    2. void Abc(int b)
    3. {
    4.    b = 10;
    5. }
    6. Abc(a); //giá trị của a vẫn là 5
    Giải pháp: tăng cấp của con trỏ b lên 1 cấp
    C++ Code:
    1. void Abc(int ***b)
    2. {
    3.  *b = new int*[10];
    4. }
    5. int **a;
    6. Abc(&a);
    hoặc sử dụng reference
    C++ Code:
    1. void Abc(int **&b)
    2. {
    3.  b = new int*[10];
    4. }
    5. int **a;
    6. Abc(a);
    Hai cách này ý nghĩa chung là truyền địa chỉ của con trỏ hay dùng con trỏ vào địa chỉ thôi mà và các thao tác giá trị sẽ đc lưu ở chính địa chỉ đó.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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