Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Trích dẫn Gửi bởi nammae
    Trong hàm main():

    Mã:
    m4.plusTwoMatrix( m1, m2 );
    Sửa là:

    Mã:
    m4 = m4.plusTwoMatrix( m1, m2 );
    oh nhỉ ! thế mà không nghĩ ra ! cảm ơn bạn đã giúp đỡ
    nhờ bạn coi dùm mình bài này được không !

    #include <iostream.h>
    #include <conio.h>
    #include <math.h>

    class DT{
    private:
    double *a;
    int n;
    public:
    DT( int n1 = 0 ){
    this->n = n1;
    if( this->n == 0 )
    this->a = NULL;
    else{
    this->a = new double[n + 1];
    for( int i = 0; i < ( n + 1 ); ++i )
    a[i] = 0;
    }
    }
    ~DT(){
    this->n = 0;
    delete []this->a;
    }
    DT( const DT &d ){
    this->n = d.n;
    this->a = new double[d.n + 1];
    for( int i = 0; i < n; i++ ){
    a[i] = d.a[i];
    }
    }
    friend ostream& operator<<( ostream& os, const DT &d );
    friend istream& operator>>( istream& is, DT &d );
    DT operator-();
    DT operator+( const DT &d2 );
    DT operator*( const DT &d2 );
    DT operator-( const DT &d2 );
    double operator^( const double &x );
    double operator[]( int i ){
    return a[i];
    }
    };
    ostream& operator<<( ostream& os, const DT &d ){
    int i;
    os<<"-Cac he so ( tu ao ): ";
    for( i = 0; i <= d.n; ++i ){
    os<<d.a[i]<<" ";
    }
    return os;
    }
    istream& operator>>( istream& is, DT &d ){
    if( d.a != NULL )
    delete []d.a;
    cout<<"-Bac cua da thuc: ";
    cin>>d.n;
    d.a = new double[d.n + 1];
    cout<<"Nhap he so da thuc:
    ";
    for( int i = 0; i <= d.n; ++i ){
    cout<<"He so bac "<< i<<" = ";
    is>>d.a[i];
    }
    return is;
    }
    DT DT:perator-(){
    int x;
    x = this->n;
    DT p( x );
    for( int i = 0; i <= x; ++i ){
    p.a[i] = -a[i];
    }
    return p;
    }
    DT DT:perator+( const DT &d2 ){
    int i, k;
    k = n > d2.n ? n : d2.n;
    DT d( k );
    for( i = 0; i <= k; ++i ){
    if( i <= n && i <= d2.n )
    d.a[i] = a[i] + d2.a[i];
    else if( i <= n )
    d.a[i] = a[i];
    else
    d.a[i] = d2.a[i];
    }
    return d;
    }
    DT DT:perator-( const DT &d2 ){
    int i, k;
    k = n > d2.n ? n : d2.n;
    DT d( k );
    for( i = 0; i <= k; ++i ){
    if( i <= n && i <= d2.n )
    d.a[i] = a[i] - d2.a[i];
    else if( i <= n )
    d.a[i] = a[i];
    else
    d.a[i] = -d2.a[i];
    }
    return d;
    }
    DT DT:perator*( const DT &d2 ){
    int k, i, j;
    k = n + d2.n;
    DT d( k );
    for( i = 0; i <= k; ++i ){
    d.a[i] = 0;
    }
    for( i = 0; i <= n; ++i )
    for( j = 0; j <= d2.n; j++ )
    d.a[i+j] += a[i]*d2.a[j];
    return d;
    }
    double DT:perator^( const double &x ){
    double s = 0.0, t = 1.0;
    for( int i = 0; i <= n; ++i ){
    s += a[i] * t;
    t *= x;
    }
    return s;
    }
    int main(){
    DT g;
    double fx, x;
    x = 2.0;
    cout<<"
    Nhap da thuc G :";
    cin>>g;
    cout<<"
    Da thuc G :"<<g;
    DT h;
    cout<<"
    Nhap da thuc H :";
    cin>>h;
    cout<<"
    Da thuc H :"<<h;
    DT f1;
    f1 = -(g);
    cout<<"
    Da thuc F1 :"<<f1;
    fx = g^x;
    cout<<"
    Gia tri da thuc g khi x = 2.0 : "<<fx;
    getch();
    return 0;
    }
    dòng f1 = -(g); trong hàm main, mình xuất kết quả hàm f1 ra sai, mình kiểm tra nhiều lần rồi mà không phát hiện ra !

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi nammae
    Cách 1:
    Xóa hàm DT( DT &d );

    Cách 2:
    Trong hàm DT( DT &d ):

    Mã:
    for( int i = 0; i <= n; i++ )  // Dieu kien vong lap la i <= n
    thank you ! rứa mà mình không phát hiện ra [IMG]images/smilies/thinking.gif[/IMG] cảm ơn bạn !

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    ma trận trên C++ | Cộng 2 ma trận và in ra kết quả không đúng?

    Mình nhập ma trận vào và xuất ra thì bình thường, còn công hai ma trận vào rồi xuất ra thì không ra kết quả !. Mong các bạn giúp đỡ !
    code :

    Mã:
    #include <iostream.h>
    #include <conio.h>
    template < class T >
    class Matrix{
       private:
           T **matrix;
           int m, n;
       public:
           Matrix( int m1 = 0, int n1 = 0 ){
               m = m1, n = n1;
               if( m == 0 || n == 0 )
                   matrix = NULL;
               else{
                   matrix = new T*[m];
                   for( int i = 0; i < m; ++i )
                       matrix[i] = new T[n];
               }
    
           }
           ~Matrix(){
               if( matrix != NULL ){
                   for( int i = 0; i < m; ++i )
                       delete []matrix[i];
                   delete []matrix;
               }
           }
           void getDataMatrix(){
               cout<<"Nhap gia tri matran : "<<endl;
               for( int i = 0; i < m; ++i )
                   for( int j = 0; j< n; ++j ){
                       cout<<"matrix["<<i<<" "<<j<<"] = ";
                       cin>>matrix[i][j];
                   }
           }
           void displayMatrix(){
               cout<<"Matran : "<<endl;
               for( int i = 0; i < m; ++i )
                   for( int j = 0; j < n; ++j ){
                       cout<<matrix[i][j]<<" ";
                       if( j == n - 1 )
                           cout<<endl;
                   }
           }
           //friend istream& operator( istream& is, Matrix& m1 )
           friend ostream& operator<<( ostream& os, const Matrix& m1 ){
               cout<<"Matrix :"<<endl;
               for( int i = 0; i < m1.m; ++i )
                   for( int j = 0; j < m1.n; ++j ){
                       os<<m1.matrix[i][j]<<" ";
                       if( j == m1.n - 1 )
                           cout<<endl;
                   }
               return os;
           }
           void operator=( const Matrix& m1 ){
               if( matrix != NULL ){
                   for( int i = 0; i < m; ++i )
                       delete []matrix[i];
                   delete []matrix;
               }
               else{
                   m = m1.m, n = m1.n;
                   matrix = new T*[m];
                   for( int i = 0; i < m; ++i ){
                       matrix[i] = new T[n];
                       for( int j = 0; j < n; ++j )
                           matrix[i][j] = m1.matrix[i][j];
                   }
               }
    
           }
           Matrix( const Matrix& m1 ){
               m = m1.m, n = m1.n;
               matrix = new T*[m];
               for( int i = 0; i < m; ++i ){
                   matrix[i] = new T[n];
                   for( int j = 0; j < n; ++j )
                       matrix[i][j] = m1.matrix[i][j];
               }
           }
           Matrix plusTwoMatrix( const Matrix& m1, const Matrix& m2 ){
               if( m1.m != m2.m && m1.n != m2.n ){
                   cout<<"Khong thuc duoc phep cong, ket qua xuat la -1"<<endl;
                   return -1;
               }
               else{
                   int x, y, i, j;
                   x = m2.m;
                   y = m2.n;
                   Matrix m3( x, y );
                   for( i = 0; i < x; ++i ){
                       for( j = 0; j < y; ++j )
                           m3.matrix[i][j] = m1.matrix[i][j] + m2.matrix[i][j];
                   }
                   /*cout<<"Matran : "<<endl;
                   for( i = 0; i < x; ++i )
                   for( j = 0; j < y; ++j ){
                       cout<<m3.matrix[i][j]<<" ";
                       if( j == y - 1 )
                           cout<<endl;
                   }*/
                   return m3;
               }
           }
    
    };
    int main(){
       Matrix<int> m1( 2, 2 );
       m1.getDataMatrix();
       m1.displayMatrix();
       cout<<"
    Display matrix m1 again:"<<m1<<endl;
       Matrix<int> m2( 2, 2 );
       m2.getDataMatrix();
       m2.displayMatrix();
       Matrix<int> m4;
       cout<<"Cong hai ma tran m1 va m2 : "<<endl;
       m4.plusTwoMatrix( m1, m2 );
       m4.displayMatrix();
       cout<<"
    Display matrix m4 again :"<<m4<<endl;
       getch();
       return 0;
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trong hàm main():

    Mã:
    m4.plusTwoMatrix( m1, m2 );
    Sửa là:

    Mã:
    m4 = m4.plusTwoMatrix( m1, m2 );

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •