Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 16 trên tổng số 16 kết quả

Đề tài: Bài làm không báo lỗi nhưng chương trình chạy không được. Bài tập về lớp matrix phải sử dụng con trỏ. Code của mình ở dưới.

  1. #11
    Ngày gia nhập
    10 2018
    Bài viết
    8

    Mặc định Bài làm không báo lỗi nhưng chương trình chạy không được. Bài tập về lớp matrix phải sử dụng con trỏ. Code của mình ở dưới.

    C++ Code:
    1.  
    2. #include <iostream>
    3. using namespace std;
    4. //Hàm cộng hoạt động bình thường nhưng hàm nhân hoạt động sai.
    5.  
    6. class matran{
    7.  
    8. private:
    9.     int hang, cot ;
    10.     int ** a;
    11. public:
    12.     matran()
    13.     {
    14.         hang=0;cot=0;
    15.         this->a=NULL;
    16.     }
    17.    
    18.     matran(const matran &d){
    19.  
    20.         this->hang = d.hang;
    21.         this->cot = d.cot;
    22.         a = new int *[d.hang];
    23.         for ( int i =0; i < cot ; i++){
    24.             this->a[i] = new int[d.hang];
    25.  
    26.              this->a[i]= d.a[i];
    27.  
    28.         }
    29.         for (int i = 0; i < cot; i ++)
    30.             for (int j = 0; j < cot; j ++)
    31.                 a[i][j] = d.a[i][j];
    32.         *this = d;
    33.     }
    34.  
    35.     ~matran()
    36.     {
    37.         for(int i = 0; i < cot; i++)
    38.         {
    39.             delete[] a[i];
    40.         }
    41.         delete[] a;
    42.     }
    43.     void nhapmatran();
    44.  
    45.     friend void in( const matran &x);
    46.     friend matran cong(const matran &x, const matran &y);
    47.     friend matran nhan(const matran &x,const matran &y);
    48. };
    49.  
    50.  
    51. void matran::nhapmatran()
    52. {
    53.     cout << "\nNhap hang cot :";
    54.     cin >> hang;
    55.     cin >> cot;
    56.     a = new int*[hang];
    57.     for(int i = 0; i < cot; i++)
    58.         a[i] = new int[hang];
    59.        
    60.     for(int i = 0; i < cot; i++)
    61.     {
    62.         for(int j = 0; j < hang; j++)
    63.         {
    64.             cout << "\nnhap p tu";
    65.             cin >> a[i][j];
    66.         }
    67.     }
    68. }
    69.  
    70. void in( const matran &x) {
    71.     for(int i = 0; i < x.cot; i++)
    72.     {
    73.         for(int j = 0; j < x.hang; j++)
    74.         {
    75.             cout << x.a[i][j];
    76.             cout << " ";
    77.         }
    78.         cout << endl;
    79.     }
    80. }
    81.  
    82. /*
    83. matran cong(const matran &x, const matran &y) {
    84.     matran kq(x);
    85.     int hang= x.hang;
    86.     int cot = x.cot;
    87.     kq.cot = cot;
    88.     kq.hang = hang;
    89.         for (int i = 1; i <= cot; i++)
    90.         {
    91.             for (int j = 1; j <= hang; j++)
    92.             {
    93.                 kq.a[i][j] +=x.a[i][j] + y.a[i][j];
    94.             }
    95.         }
    96.     return kq;
    97. }
    98.  
    99. matran nhan( const matran &x , const matran &y) {
    100.     matran kq(x);
    101.     int cot = x.cot;
    102.     int hang = x.hang;
    103.     kq.cot = cot;
    104.     kq.hang = hang;
    105.     for ( int i =0 ; i < kq.cot ; i ++)
    106.     {
    107.         for ( int j = 0 ; j < kq.hang; j ++)
    108.         {
    109.             kq.a[i][j]=0;
    110.             for ( int k =0; k < kq.cot; k++)
    111.             {
    112.                 kq.a[i][j] += x.a[i][k]*y.a[k][j];
    113.             }
    114.         }
    115.     }
    116.     return kq;
    117. }
    118. */
    119.  
    120. matran cong(const matran &x, const matran &y) {
    121.     cout << "\nToi dang cong ..\n"; //output
    122.     matran kq(x);
    123.     int hang= x.hang;
    124.     int cot = x.cot;
    125.     kq.cot = cot;
    126.     kq.hang = hang;
    127.     int tam;
    128.     for ( int i =0 ; i < cot ; i++){
    129.         for ( int j =0 ; j < hang ; j++)
    130.         {
    131.             kq.a[i][j] = x.a[i][j] + y.a[i][j];
    132.         }
    133.     }
    134.     return kq;
    135. }
    136.  
    137. matran nhan( const matran &x , const matran &y) {
    138.     cout << "\nToi dang nhan ..\n"; //output
    139.  
    140.     matran kq(x);
    141.     int cot = x.cot;
    142.     int hang = x.hang;
    143.     kq.cot = cot;
    144.     kq.hang = hang;
    145.     int tam,tam1,tam2;
    146.     int i,j,k;
    147.     for(i=0;i<hang;i++)
    148.     {
    149.         for(j=0;j<cot;j++)
    150.         {
    151.             tam=kq.a[i][j];
    152.             for(k=0;k<cot;k++)
    153.             {
    154.                 tam1=x.a[i][k];
    155.                 tam2=y.a[k][j];
    156.                 kq.a[i][j] =tam + tam1 * tam2;
    157.                 tam =0;
    158.             }
    159.         }
    160.        
    161.         /*for(int i= 0; i<dongA; i++)
    162. for(int j = 0; j<cotB; j++)
    163. for(int k = 0; k<cotA; j++)
    164. {
    165. c[i][j] += a[i][k]*b[k][j];
    166. }*/
    167.     }
    168.     return kq;
    169. }
    170.  
    171. int main()
    172. {
    173.     matran x,y,c,d;
    174.     int hang,cot;
    175.     cout <<" nhap ma tran x : \n";
    176.     x.nhapmatran();
    177.     cout <<"\n nhap ma tran y : \n";
    178.     y.nhapmatran();
    179.     cout <<" \nma tran x vua nhap la : \n";
    180.     in(x);
    181.     cout <<" \nma tran y vua nhap la : \n";
    182.     in(y);
    183.     c = cong(x,y);
    184.     cout <<" \ntong cua 2 ma tran la : \n";
    185.     in(c);
    186.     cout <<" \ntich cua 2 ma tran la : \n";
    187.     d = nhan(x,y);
    188.     in(d);
    189.     return 1;
    190. }
    [/QUOTE]
    Đã được chỉnh sửa lần cuối bởi dinhphuong : 14-10-2018 lúc 12:23 AM. Lý do: Thiếu thông tin cần cung cấp

  2. #12
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    512

    Kết quả kỳ vọng như thế nào? Ví dụ, nếu nhập vào ma trận A cỡ 2*3 và ma trận B cỡ 4*5 thì bạn kỳ vọng in ra kết quả tổng bằng bao nhiêu, tích bằng bao nhiêu?
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #13
    Ngày gia nhập
    10 2018
    Bài viết
    8

    Mặc định Test của tui đó mọi người làm thử đi

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Kết quả kỳ vọng như thế nào? Ví dụ, nếu nhập vào ma trận A cỡ 2*3 và ma trận B cỡ 4*5 thì bạn kỳ vọng in ra kết quả tổng bằng bao nhiêu, tích bằng bao nhiêu?
    Ma trận 1: 3*3
    1 2 3

    4 5 6

    7 8 9

    Ma trận 2: 3*3

    9 8 7
    6 5 4
    3 2 1

    Cộng

    10 10 10
    10 10 10
    10 10 10

    Nhân

    30 24 18
    84 69 54
    138 144 90

  4. #14
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    512

    Mình không hỏi về trường hợp cả 2 ma trận cỡ 3*3. Mình hỏi về trường hợp khác cơ. Hãy trả lời thẳng câu hỏi của mình.

    Mình đặt câu hỏi như thế bởi vì code của bạn chấp nhận 2 ma trận nhập vào có kích cỡ bất kỳ.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  5. #15
    Ngày gia nhập
    10 2018
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Mình không hỏi về trường hợp cả 2 ma trận cỡ 3*3. Mình hỏi về trường hợp khác cơ. Hãy trả lời thẳng câu hỏi của mình.

    Mình đặt câu hỏi như thế bởi vì code của bạn chấp nhận 2 ma trận nhập vào có kích cỡ bất kỳ.
    Test trường hợp đặc biệt trước đã

    Test mới này
    MT 1
    1 0 2
    -1 3 1

    MT 2

    3 1
    2 1
    1 0

    nhân MT 1 *MT 2

    -5 -1
    -4 -2

    MT 3

    1 0 3
    0 1 4

    cộng MT1+MT3

    2 0 5
    -1 4 5

    MT 2*3 +4*5 thì cộng sao được
    Đã được chỉnh sửa lần cuối bởi dinhphuong : 15-10-2018 lúc 09:17 PM.

  6. #16
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    512

    Mặc định Bài làm không báo lỗi nhưng chương trình chạy không được. Bài tập về lớp matrix phải sử dụng con trỏ. Code của mình ở dưới.

    Trích dẫn Nguyên bản được gửi bởi dinhphuong Xem bài viết
    Test trường hợp đặc biệt trước đã
    Đừng test vội. Vì code chưa đúng. Và yêu cầu của bạn cũng chưa rõ ràng.

    Trích dẫn Nguyên bản được gửi bởi dinhphuong Xem bài viết
    MT 2*3 +4*5 thì cộng sao được
    1. Bạn biết thế, nhưng code của bạn thì vẫn nhào vô làm tính, bất chấp đã biết trước là không thể tính được. Vậy là sao?

    2. Tổng quát, khi nhập vào ma trận thứ nhất cỡ m1*n1 và ma trận thứ hai cỡ m2*n2, thì m1,n1,m2,n2 phải thỏa ràng buộc nào để 2 ma trận có thể cộng được với nhau? Và nhân được với nhau?

    3. Khi thỏa ràng buộc đó, ma trận tổng có kích cỡ là bao nhiêu? Và ma trận tích thì sao?

    4. Bạn muốn chương trình của bạn làm gì nếu dữ liệu nhập vào không thỏa ràng buộc đó?

    Trả lời hết 4 câu trên thì mới xem như xong phần phát biểu yêu cầu. Lúc ấy hãy xem đến code, xem có theo sát yêu cầu hay không.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

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