Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Mảng 2 chiều (C++)?

  1. #1
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Wink Mảng 2 chiều (C++)?

    Em có đề bài này:
    Xây dựng thư viện phép toán cho các đối tượng ma trận:
    - Nhập ,xuất .
    - Cộng trừ nhân chia 2 ma trận.
    - Kiểm tra 1 ma trận vuông hay không.
    - Tính định thức ma trận.
    - Tìm ma trận nghịch đảo.
    Xây dựng 1 chương trình sử dụng thư viện nói trên.


    Với đề bài này thầy em yêu cầu là các ma trận không được nhập từ bàn phím(Nghĩa là ma trận phải được nhập từ trong rồi lúc test bài nó hiện ra kết quả luôn)

    Hướng làm bài của em là:
    Xây dựng các phương thức toán tử +,-,*,/....
    Em sẽ cho ra kết quả 1 ma trận S=(a*b-c)/(d+e) trong đó a,b,c,d,e là các ma trận với các số mình nhập vào từ lúc xây dựng CT.
    Em đọc qua sách thấy dùng hàm tạo để khởi gán.
    Các anh chỉ cho em cách khởi gán các giá trị vào MT đc ko, hay anh nào có hướng làm khác thì chỉ em với.Thank

  2. #2
    Ngày gia nhập
    07 2007
    Nơi ở
    Sơn La
    Bài viết
    133

    Trích dẫn Nguyên bản được gửi bởi ntd2012 Xem bài viết
    Các anh chỉ cho em cách khởi gán các giá trị vào MT đc ko, hay anh nào có hướng làm khác thì chỉ em với.Thank
    Hình như trong diễn đàn có nói về chồng toán tử, và các phép toán trên ma trận rồi . Bạn search và tham khảo.
    Còn về cách khởi gán các giá trị vào MT thì nên dùng
    Code:
    1.randomize();
    2.int a=random(int);
    3.quét tất cả các phần tử của ma trận
      
    Code:
        for (int i=0;i<max_hang;i++)
          for(int j=0;j<max_cot;j++)
             Matrix[i][j]=a;
    Rồi thực hiện các phép tính bình thường.
    Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.

  3. #3
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Cám ơn bạn đã góp ý.
    Các chồng toán tử thì mình làm được.
    Ý của mình ở đây là việc nhập các ma trận để tính:
    -Thầy mình không cho nhập lúc test mà nhập từ trong CT.
    Mình muốn hỏi là làm thế nào mà nhập đc từ trước(Dùng hàm tạo để khởi gán hay có cách khác?)
    Đoạn code bạn vừa nêu trên nó cho ra số bất kỳ phải không?

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Thầy mình không cho nhập lúc test mà nhập từ trong CT.
    Tạo random hoặc tự bạn define sẵn một số giá trị nào đó trong constructor là oke.
    Keep moving forward!

    ... Retired ...

  5. #5
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Các anh cho em hỏi là có cách nhập ma trận bằng cách đọc file từ ngoài vào không?
    Anh nào biết thì chỉ giúp em với

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định Mảng 2 chiều (C++)?

    Nếu nhập với size từ ngoai vào thì mình nghĩ bạn phải cấp phát động cho nó như sau :
    PHP Code:
    #include <iostream>
    #include <fstream>using std::fstream;

    #include <cstdlib> /*exit prototype*/

    int size;
    using namespace std;
    int main(void)
    {
          
    ifstream inFile("file.txt"ios::in);
          if ( !
    inFile )
          {
                
    cerr << "File could not be opened !" << endl;
                exit(
    1);
          }
          else
          {
                
    inFile >> size;
                
    int **Ptr = new int *[size];
                for( 
    int x 0sizex++){
                      
    Ptr[x] = new int[size];
                }
                for ( 
    int x 0sizex++){     
                      
    delete[] Ptr[x];
                }
          }
          
    delete[] Ptr;

    Lúc này thì bạn sẽ truy xuất được Ptr[x][y]
    Hoặc dùng cách này :
    PHP Code:
    #include <iostream>

    template <class T>
    class 
    Column 
    {
          
    *pointer;
      public:
          
    Column(*pointer):pointer(pointer){}

          
    &operator[](unsigned i)
          {
                return 
    pointer[i];
          }
    };

    template <class T>
    class 
    Dynamic_2D_array 
    {
          
    unsigned width,height;
          
    *array;
      public:
          
    Dynamic_2D_array(unsigned widthunsigned height):
          
    width(width),height(height),array(new T[width*height]){}

          
    Column<Toperator[](unsigned i)
          {
              return 
    Column<T>(&array[height*i]);
          }

          ~
    Dynamic_2D_array()
          {
              
    delete[] array;
          }
    };

    int main()
    {
          
    Dynamic_2D_array<intM(4,5);
        
          for( 
    unsigned i 04; ++i){
                for(
    unsigned j 05; ++j)
                      
    M[i][j]=i+j;
          }
      
          for( 
    unsigned i 04; ++i){
                for( 
    unsigned j 05; ++j)
                      
    std::cout << M[i][j] << ' ';
                            
    std::cout << '\n';
          }
          
          
          return 
    0;

    chú ý nếu dùng con cấp phát động thì 5 thằng này là như nhau :
    PHP Code:
    a[i][j]
    *(
    a[i]+j)
    (*(
    a+i))[j]
    *(((*
    a+i))+j)
    *(&
    a[0][0]+size*i+j
    Hope it help ! thân !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 13-12-2007 lúc 04:17 PM.

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Cám ơn các anh đã hướng dẫn.
    Để em làm thử đã rồi post lên các anh kiểm tra giúp em nhé

  8. #8
    Ngày gia nhập
    11 2007
    Bài viết
    9

    Bài này em làm như thế này:
    PHP Code:
    #include<conio.h>
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    #include<stdlib.h>
    class MT
    {
        private:
            
    int hang,cot;
            
    int a[20][20];
        public:
            
    friend ostream &operator<<(ostream &os,const MT &x);
            
    friend istream &operator>>(istream &is,MT &x);
            
    MT operator+(const MTx2);
            
    MT operator-(const MTx2);
            
    MT operator*(const MTx2);
            
    void tim();
            
    void dt();
    };
    MT MT::operator+(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep cong ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]+x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator-(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep tru ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]-x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator*(const MT &x2)
    {
        if(
    this->cot!=x2.hang)
        {
            
    cout<<"\n Khong thuc hien duoc phep nhan ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=x2.cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              {
                
    x.a[i][j]=0;
                for(
    int k=0;k<x2.hang;k++)
                 
    x.a[i][j]+=this->a[i][k]*x2.a[k][j];
              }
            return 
    x;
        }
    }
    void MT::tim()
    {
        if(
    this->hang==this->cot)
        
    cout<<*this;
    }
    void MT::dt()
    {

        
    int m,i,j,k,heso1=1,heso2=1,l,tg,c,u,v,heso,s,n;
        
    double dt;
        if(
    this->hang==this->cot)
        {
         
    m=this->hang;n=this->cot;
         if(
    n==1cout<<a[0][0];
         if(
    n==2cout<<a[0][0]*a[1][1]-a[1][0]*a[0][1];
         if(
    n>2){ m=n+1;
             for(
    j=0;j<n-1;j++)
             { 
    m--;
               for(
    i=0;i<m;)
               { if(
    a[i][j]==0i++;
                 else{ 
    k=i;i++;
                   if(
    a[i][j]!=0&&i<m){ if(a[k][j]%a[i][j]==0){ l=-a[k][j]/a[i][j];
                                        for(
    c=0;c<n;c++)
                                        { 
    a[i][c]=l*a[i][c]+a[k][c];
                                          
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                          
    a[k][c]=-a[k][c];
                                        }
                                        
    heso1=l*heso1;
                                          }
                            else{ 
    u=a[k][j];
                                  
    v=a[i][j];
                                  for(
    c=0;c<n;c++)
                                  { 
    a[i][c]=-u*a[i][c]+v*a[k][c];
                                
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                
    a[k][c]=-a[k][c];
                                  }
                                  
    heso2=heso2*(-u);
                                }
                              }
                   else{ if(
    i==m-1){ for(c=0;c<n;c++)
                             { 
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                               
    a[k][c]=-a[k][c];
                             }
                           }
                       }
                  }
               }
             }
             
    cout<<"\n Ma tran tam giac tren:";
             for(
    i=0;i<n;i++)
             { 
    cout<<"\n";
               for(
    j=0;j<n;j++)
               
    cout<<setw(6)<<a[i][j];
             }
             
    cout<<"\n";
             
    heso=1;
             for(
    i=0;i<n;i++)
              for(
    j=0;j<n;j++)
              { 
    heso=heso1*heso2;}
             
    s=1;
             
    cout<<"\n Dinh thuc:";
             for(
    j=0,i=n-1;i>=0;i--,j++)
             { 
    s=s*a[i][j];}
               
    dt=s/heso;
               
    cout<<dt;
             }
        }
    }
    istream &operator>>(istream &is,MT &x)
    {
        
    cout<<"\n Nhap so hang va so cot cua ma tran:";
        
    is>>x.hang>>x.cot;
        
    randomize();
        for(
    int i=0;i<x.hang;i++)
         for(
    int j=0;j<x.cot;j++)
          {
    x.a[i][j]=random(5);
           
    cout<<"\n";
           
    cout<<"a["<<i+1<<"]"<<"["<<j+1<<"]:"<<x.a[i][j];
          }
        return 
    is;
    }
    ostream &operator<<(ostream &os,const MT &x)
    {
        
    os<<setprecision(2)<<setiosflags(ios::showpoint);
        for(
    int i=0;i<x.hang;i++)
        {
            
    os<<"\n";
            for(
    int j=0;j<x.cot;j++)
            
    os<<setw(6)<<x.a[i][j];
        }
        
    os<<"\n";
        return 
    os;
    }
    void Menu()
    {
        
    clrscr();
        
    cout<<"\n Lua chon cong viec theo so \n";
        
    cout<<"\n 1.Nhap ma tran";
        
    cout<<"\n 2.Hien ma tran";
        
    cout<<"\n 3.Cong 2 ma tran";
        
    cout<<"\n 4.Hieu 2 ma tran";
        
    cout<<"\n 5.Tich 2 ma tran";
        
    cout<<"\n 6.Tim ma tran vuong";
        
    cout<<"\n 7.Tim dinh thuc";
        
    cout<<"\n 0.Thoat \n";
    }
    void main()
    {
        
    MT d,e,s;
        while(
    1)
        {
            
    Menu();
            
    int k=getch();
            
    clrscr();
            switch(
    k)
            {
             case 
    '1':
                
    cout<<"\nMa tran 1\n";
                
    cin>>d;
                
    cout<<"\nMa tran 2\n";
                
    cin>>e;
                break;
             case 
    '2':
                
    cout<<d<<e;
                break;
             case 
    '3':
                
    cout<<"Tong 2 ma tran ban vua nhap la:\n";
                
    cout<<d+e;
                break;
             case 
    '4':
                
    cout<<"Hieu 2 ma tran ban vua nhap la:\n";
                
    cout<<d-e;
                break;
             case 
    '5':
                
    cout<<"Tich 2 ma tran ban vua nhap la:\n";
                
    cout<<d*e;
                break;
             case 
    '6':
                
    cout<<"Ma tran vuong:\n";
                
    d.tim();e.tim();
                break;
             case 
    '7':
                
    cout<<"\nDinh thuc ma tran 1\n";
                
    d.dt();
                
    cout<<"\nDinh thuc ma tran 2\n";
                
    e.dt();
                break;
            }
            if(
    k=='0') break;
        
    getch();
        }

    Nó bị hiện tượng như thế này:
    -VD em nhập 2 ma trận lần lượt có số hàng và cột là: 3*2 và 2*3.
    -Ấn 2 để xem, hiện ra 2 ma trận có số hàng và số cột như trên.
    -Ấn 5 để nhân 2 MT.
    -Khi ấn 2 lại để xem thì số hàng và số cột của ma trận 1(3*2) lại thành 3*3 của MT sau khi nhân (mặc dù các số bên trong ko thay đổi)

    Nói dài dòng là thế nhưng khi thử sẽ rất nhanh. Anh nào có thời gian thì xem giúp em, em thử mãi mà chưa sửa đc. Thank

  9. #9
    Ngày gia nhập
    11 2007
    Bài viết
    47

    Bạn tham kháo cái này nha:

    Code:
    #include <iostream>
    #include <sstream>
    #include <iomanip>
    
    using namespace std;
    
    class Matrix{
    private:
        int *data;
        int nRows, nCols;
        
    public:
        Matrix(const int r, const int c){
    		nRows = r;
    		nCols = c;
    		data = new int [r * c];
        }
        
    	Matrix(const Matrix &m){
    		nRows = m.nRows;
    		nCols = m.nCols;
    		data = new int [nRows*nCols];
    		for (int i=0; i<nRows*nCols; i++){
    			data[i] = m.data[i];
    		}
    	}
    	
    	~Matrix(){
    		if (data != NULL ){
    			delete []data;
    			data = NULL;
    		}	
    	}
    
        void setAt(int i, int j,const int x){
    		data[i*nCols+j] = x;
        }
        
        int getAt(int i,int j){
            return data[i*nCols+j];
        }
        
    	string print(){
            ostringstream os;
            for (int i=0; i<nRows; i++){
                for (int j=0; j<nCols; j++)
                	os << setw(9) << left << data[i*nCols+j];
                os << endl;
            }
            os << endl;
            return os.str();
        }
        
    	//Thay doi kich thuoc ma tran
    	void resize(int r, int c){
            delete []data;
            nRows = r;
            nCols = c;
            data = new int [r*c];
        }
       
    	//Toan tu gan' hai ma tran
    	Matrix & operator = (const Matrix &m){
    		int r = m.nRows;
    		int c = m.nCols;
    		resize (r,c);
    		for (int i=0; i<r*c; i++){
    			data[i] = m.data[i];
    		}
    		return *this;
    	}
    	//Toan tu cong hai ma tran
    	friend Matrix operator + (const Matrix &m1,const Matrix &m2){
    		if ((m1.nRows != m2.nRows )||(m1.nCols != m2.nCols)){
    			cout << endl << "Khong the cong hai ma tran";
    			cin.ignore(1);
    			exit(1);
    		}
            else {
    			int r= m1.nRows;
    			int c= m1.nCols;
    			Matrix m(r,c);
                
    			for (int i=0; i<r*c; i++)
    				m.data[i] = m1.data[i]+ m2.data[i];
    			return m;
            }
    	}
    	//Toan tu nhan hai ma tran
    	friend Matrix operator * (const Matrix &m1,const Matrix &m2){
    		if (m1.nCols != m2.nRows ){
    			cout << endl << "Khong the nhan hai ma tran";
    			cin.ignore(1);
    			exit(2);
    		}
            else {
    			int r= m1.nRows;
    			int c1= m1.nCols;
    			int c2= m2.nCols;
    			Matrix m(r,c2);
    			for (int i=0; i<r; i++)
    				for (int j=0; j<c2; j++){
    					m.data[i*c2+j] = 0;
    					for (int k=0; k<c1; k++)
    						m.data[i*c2+j] += m1.data[i*c1+k]*m2.data[k*c2+j];
    				}
    			return m;
            }
    	}
        
    };
    
    main(){
        Matrix a(3,3),b(3,4);
        Matrix d(5,5),c(1,1);
    	int i,j;
    	//Thiet lap gia tri cho ma tran a
        for (i=0; i<3; i++)
            for (j=0; j<3; j++)
                a.setAt(i,j,i*3+j);
        cout << "a =" << endl << a.print();
        //Thiet lap gia tri cho ma tran b
        for (i=0; i<3; i++)
            for (j=0; j<4; j++)
                b.setAt(i,j,i+j*3);
        cout << "b =" << endl << b.print();
        //Tinh toan ma tran
        c = a * b;
        cout << "c = a * b = " << endl << c.print();
        d = c + b;
        cout << "d= c + b = " << endl << d.print(); 
    	cin.ignore(1);
    }
    Đã được chỉnh sửa lần cuối bởi metal_shield : 10-12-2007 lúc 06:16 PM. Lý do: Thêm tab code

  10. #10
    Ngày gia nhập
    11 2007
    Bài viết
    9

    PHP Code:
    #include<conio.h>
    #include<iostream.h>
    #include<iomanip.h>
    #include<math.h>
    #include<stdlib.h>
    class MT
    {
        private:
            
    int hang,cot;
            
    double a[20][20];
        public:
            
    friend ostream &operator<<(ostream &os,const MT &x);
            
    friend istream &operator>>(istream &is,MT &x);
            
    MT operator+(const MTx2);
            
    MT operator-(const MTx2);
            
    MT operator*(const MTx2);
            
    MT operator!();
            
    void tim();
            
    void dt();
    };
    MT MT::operator+(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep cong ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]+x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator-(const MT &x2)
    {
        if(
    this->hang!=x2.hang||this->cot!=x2.cot)
        {
            
    cout<<"\n Khong thuc hien duoc phep tru ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=this->cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              
    x.a[i][j]=this->a[i][j]-x2.a[i][j];
            return 
    x;
        }
    }
    MT MT::operator*(const MT &x2)
    {
        if(
    this->cot!=x2.hang)
        {
            
    cout<<"\n Khong thuc hien duoc phep nhan ma tran!";
            
    getch();
            return *
    this;
        }
        else
        {
            
    MT x;
            
    hang=x.hang=this->hang;
            
    cot=x.cot=x2.cot;
            for(
    int i=0;i<hang;i++)
             for(
    int j=0;j<cot;j++)
              {
                
    x.a[i][j]=0;
                for(
    int k=0;k<x2.hang;k++)
                 
    x.a[i][j]+=this->a[i][k]*x2.a[k][j];
              }
            return 
    x;
        }
    }
    MT MT::operator!()
    {

        if(
    this->hang==this->cot)
        {
          
    MT x;
          
    int i,j,k,r,n;
          
    double tg;
          
    n=x.hang=this->hang;
          
    n=x.cot=this->cot;
          for(
    i=0;i<n;i++)
           for(
    j=0;j<n;j++)
            if(
    i==jx.a[i][j]=1;
            else 
    x.a[i][j]=0;
          for(
    k=0;k<n;k++)
          {
           
    r=k;
           for(
    i=k+1;i<n;i++)
            if(
    abs(this->a[i][k])>abs(this->a[r][k])) r=i;
           
    /*       if(abs(this->a[r][k])<1.0E-8)
           {
            cout<<"\n  Ma tran suy bien,khong co nghich dao";
            getch();
            return *this;
           }        */
           
    for(j=0;j<n;j++)
           {
            
    tg=this->a[k][j];
            
    this->a[k][j]=this->a[r][j];
            
    this->a[r][j]=tg;
            
    tg=x.a[k][j];
            
    x.a[k][j]=x.a[r][j];
            
    x.a[r][j]=tg;
           }
           
    tg=this->a[k][k];
           for(
    j=0;j<n;j++)
           {
            
    this->a[k][j]/=tg;
            
    x.a[k][j]/=tg;
           }
           for(
    int i=0;i<n;i++)
           if(
    i!=k)
           {
            
    tg=this->a[i][k];
            for(
    j=0;j<n;j++)
            {
             
    this->a[i][j]-=tg*this->a[k][j];
             
    x.a[i][j]-=tg*x.a[k][j];
            }
           }
          }

        return 
    x;
          }
          else
          {
            
    cout<<"Khong thuc hien duoc";
            return *
    this;
          }
    }
    void MT::tim()
    {
        if(
    this->hang==this->cot)
        
    cout<<*this;
    }
    void MT::dt()
    {

        
    int m,i,j,k,heso1=1,heso2=1,l,tg,c,u,v,heso,s,n;
        
    double dt;
        if(
    this->hang==this->cot)
        {
         
    m=this->hang;n=this->cot;
         if(
    n==1cout<<a[0][0];
         if(
    n==2cout<<a[0][0]*a[1][1]-a[1][0]*a[0][1];
         if(
    n>2){ m=n+1;
              for(
    j=0;j<n-1;j++)
              { 
    m--;
                for(
    i=0;i<m;)
                { if(
    a[i][j]==0i++;
                  else{ 
    k=i;i++;
                    if(
    a[i][j]!=0&&i<m){ if(a[k][j]%a[i][j]==0){ l=-a[k][j]/a[i][j];
                                         for(
    c=0;c<n;c++)
                                         { 
    a[i][c]=l*a[i][c]+a[k][c];
                                           
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                           
    a[k][c]=-a[k][c];
                                         }
                                         
    heso1=l*heso1;
                                           }
                            else{ 
    u=a[k][j];
                                  
    v=a[i][j];
                                  for(
    c=0;c<n;c++)
                                  { 
    a[i][c]=-u*a[i][c]+v*a[k][c];
                                
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                                
    a[k][c]=-a[k][c];
                                  }
                                  
    heso2=heso2*(-u);
                                }
                              }
                   else{ if(
    i==m-1){ for(c=0;c<n;c++)
                             { 
    tg=a[k][c];a[k][c]=a[i][c];a[i][c]=tg;
                               
    a[k][c]=-a[k][c];
                             }
                           }
                       }
                  }
               }
             }
             
    cout<<"\n Ma tran tam giac tren:";
             for(
    i=0;i<n;i++)
             { 
    cout<<"\n";
               for(
    j=0;j<n;j++)
               
    cout<<setw(6)<<a[i][j];
             }
             
    cout<<"\n";
             
    heso=1;
             for(
    i=0;i<n;i++)
              for(
    j=0;j<n;j++)
              { 
    heso=heso1*heso2;}
             
    s=1;
             
    cout<<"\n Dinh thuc:";
             for(
    j=0,i=n-1;i>=0;i--,j++)
             { 
    s=s*a[i][j];}
               
    dt=s/heso;
               
    cout<<dt;
             }
        }
    }

    istream &operator>>(istream &is,MT &x)
    {
        
    cout<<"\n Nhap so hang va so cot cua ma tran:";
        
    is>>x.hang>>x.cot;
        
    randomize();
        for(
    int i=0;i<x.hang;i++)
         for(
    int j=0;j<x.cot;j++)
          {
    x.a[i][j]=random(5);
           
    cout<<"\n";
           
    cout<<"a["<<i+1<<"]"<<"["<<j+1<<"]:"<<x.a[i][j];
          }
        return 
    is;
    }
    ostream &operator<<(ostream &os,const MT &x)
    {
        
    os<<setprecision(2)<<setiosflags(ios::showpoint);
        for(
    int i=0;i<x.hang;i++)
        {
            
    os<<"\n";
            for(
    int j=0;j<x.cot;j++)
            
    os<<setw(6)<<x.a[i][j];
        }
        
    os<<"\n";
        return 
    os;
    }
    void Menu()
    {
        
    clrscr();
        
    cout<<"\n Lua chon cong viec theo so \n";
        
    cout<<"\n 1.Nhap ma tran";
        
    cout<<"\n 2.Hien ma tran";
        
    cout<<"\n 3.Cong 2 ma tran";
        
    cout<<"\n 4.Hieu 2 ma tran";
        
    cout<<"\n 5.Tich 2 ma tran";
        
    cout<<"\n 6.Tim ma tran vuong";
        
    cout<<"\n 7.Tim dinh thuc";
        
    cout<<"\n 8.Tim ma tran nghich dao";
        
    cout<<"\n 0.Thoat \n";
    }
    void main()
    {
        
    MT d,e,s;
        while(
    1)
        {
            
    Menu();
            
    int k=getch();
            
    clrscr();
            switch(
    k)
            {
             case 
    '1':
                
    cout<<"\nMa tran 1\n";
                
    cin>>d;
                
    cout<<"\nMa tran 2\n";
                
    cin>>e;
                break;
             case 
    '2':
                
    cout<<d<<e;
                break;
             case 
    '3':
                
    cout<<"Tong 2 ma tran ban vua nhap la:\n";
                
    cout<<d+e;
                break;
             case 
    '4':
                
    cout<<"Hieu 2 ma tran ban vua nhap la:\n";
                
    cout<<d-e;
                break;
             case 
    '5':
                
    cout<<"Tich 2 ma tran ban vua nhap la:\n";
                
    cout<<d*e;
                break;
             case 
    '6':
                
    cout<<"Ma tran vuong:\n";
                
    d.tim();e.tim();
                break;
             case 
    '7':
                
    cout<<"\nDinh thuc ma tran 1\n";
                
    d.dt();
                
    cout<<"\nDinh thuc ma tran 2\n";
                
    e.dt();
                break;
             case 
    '8':
                
    cout<<"\n Ma tran nghich dao\n";
                
    cout<<!(d);
                
    cout<<"\n";
                
    cout<<!(e);
                break;
            }
            if(
    k=='0') break;
        
    getch();
        }

    Lúc em chạy nó báo lỗi:
    Illegal use of floating point
    Lỗi này là lỗi gì hả các anh. Khi em sửa khai báo double a[10][10] thành int a[10][10] thì nó lại hết.

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

  1. Trả lời: 2
    Bài viết cuối: 21-04-2013, 09:46 AM
  2. Lỗi: bố cục trang web tự tăng theo chiều ngang khi chiều cao thay đổi
    Gửi bởi tuanngocpt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-03-2013, 11:25 PM
  3. Trả lời: 1
    Bài viết cuối: 28-04-2012, 09:43 PM
  4. 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
  5. Lời giải bài tập: Chuỗi Ký tự, mảng số nguyên 1 chiều, mảng 2 chiều, tạo Menu
    Gửi bởi xuanngoc trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 15-10-2011, 01:17 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