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ố 17 kết quả

Đề tài: Ma trận động !

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

    Mặc định Ma trận động !

    Mình có bài tập là tạo ma trận động [nhập-xuất] và cộng 2 ma trận lại.
    Code đã làm xong... khi run thì nhập xuất ổn cả...nhưng cộng 2 mt thì nó sai... các bạn chỉnh giúp nhé....
    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<math.h>
    #include<stdio.h>
    
    void Nhap(int **&,int &,int &);
    void Xuat(int **,int,int);
    int Tong(int **,int **,int **,int,int,int,int);
    
    void main()
    {
    	int d1,c1,d2,c2,d3,c3;
    	int **mt1,**mt2,**mt3;
    	cout<<"Nhap mt 1 : \n";
    	Nhap(mt1,d1,c1);
    	cout<<"Nhap mt 2 : \n";
    	Nhap(mt2,d2,c2);
    	cout<<"\n Ma tran 1: \n";
    	Xuat(mt1,d1,c1);
    	cout<<"\n Ma tran 2 : \n";
    	Xuat(mt2,d2,c2);
    	cout<<"\n";
    	if(Tong(mt1,mt2,mt3,d1,d2,c1,c2))
    
    		c3=c1;
    		d3=d1;
    		cout<<"\n Ma tran 3 = Ma tran 1+ Ma tran 2 : \n ";
    		Xuat(mt3,d3,c3);
                   
    	getch();
    
    }
    
    void Nhap(int **&mt,int &d,int &c)
    {
    	cout<<"Nhap d : ";
    	cin>>d;
    	cout<<"Nhap c : ";
    	cin>>c;
    	mt=new int*[d];
    	for(int i=0;i<d;i++)
    	       {
    		mt[i]=new int [c];
    		for(int j=0;j<c;j++)
    		      {
    
    			cout<<"Nhap a["<<i<<"]["<<j<<"] = ";
    			cin>>mt[i][j];
    		      }
    		}
    
    }
    
    void Xuat(int **mt,int d,int c)
    {
    	for(int i=0;i<d;i++)
    		for(int j=0;j<c;j++)
    			cout<<"\t"<<mt[i][j];
    }
    int Tong(int **a,int **b,int **tong,int da,int db,int ca,int cb)
    {
    	tong = new int *[da];
    	if(da!=db||ca!=cb)
    		return 0;
    	for(int i=0;i<da;i++)
    	tong [i] = new int [ca];
    		{
    		for(int j=0;j<ca;j++)
    		tong[i][j] = a[i][j]+b[i][j];
    		}
    		return 1;
    }
    thanks

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình đã sửa rồi đây :

    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<math.h>
    4. #include<stdio.h>
    5.  
    6. void Nhap(int **&,int &,int &);
    7. void Xuat(int **,int,int);
    8. int Tong(int **,int **,int **&,int,int,int,int); // thêm tham chiếu vào parameter thứ 3
    9. void GiaiPhong(int **&,int);
    10.  
    11. void main()
    12. {
    13.     int d1,c1,d2,c2,d3,c3;
    14.     int **mt1 = NULL,**mt2 = NULL ,**mt3 = NULL;
    15.  
    16.     cout<<"Nhap mt 1 : \n";
    17.     Nhap(mt1,d1,c1);
    18.     cout<<"Nhap mt 2 : \n";
    19.     Nhap(mt2,d2,c2);
    20.  
    21.     cout<<"\n Ma tran 1: \n";
    22.     Xuat(mt1,d1,c1);
    23.     cout<<"\n Ma tran 2 : \n";
    24.     Xuat(mt2,d2,c2);
    25.     cout<<"\n";
    26.    
    27.     if(Tong(mt1,mt2,mt3,d1,d2,c1,c2))
    28.     {
    29.         c3=c1;
    30.         d3=d1;
    31.         cout<<"\n Ma tran 3 = Ma tran 1+ Ma tran 2 :"<<endl;
    32.         Xuat(mt3,d3,c3);
    33.         cout<<"\n";
    34.     }
    35.  
    36.     GiaiPhong(mt1,d1);
    37.     GiaiPhong(mt2,d2);
    38.     GiaiPhong(mt3,d3);
    39.                
    40.     getch();
    41.  
    42. }
    43.  
    44. void GiaiPhong(int **&mt,int d)
    45. {
    46.     for (int i=0;i<d;i++)
    47.         delete mt[i];
    48.     delete mt;
    49.     mt = NULL;
    50. }
    51.  
    52. void Nhap(int **&mt,int &d,int &c)
    53. {
    54.     cout<<"Nhap d : ";
    55.     cin>>d;
    56.     cout<<"Nhap c : ";
    57.     cin>>c;
    58.  
    59.     mt=new int * [d];
    60.     for(int i=0;i<d;i++)
    61.     {
    62.         mt[i] = new int [c];
    63.         for(int j=0;j<c;j++)
    64.         {
    65.  
    66.             cout<<"Nhap a["<<i<<"]["<<j<<"] = ";
    67.             cin>>mt[i][j];
    68.         }
    69.     }
    70.  
    71. }
    72.  
    73. void Xuat(int **mt,int d,int c)
    74. {
    75.     for(int i=0;i<d;i++)
    76.     {
    77.         for(int j=0;j<c;j++)
    78.             cout<<" "<<mt[i][j];
    79.         cout<<endl; // trong console cần phải xuống dòng thì dòng đó mới được in ra.
    80.     }
    81. }
    82.  
    83. int Tong(int **a,int **b,int **&tong,int da,int db,int ca,int cb)
    84. {
    85.     if(da != db || ca != cb)
    86.         return 0;
    87.    
    88.     tong = new int *[da];
    89.  
    90.     for(int i=0;i<da;i++)
    91.     {
    92.         tong [i] = new int [ca];
    93.    
    94.         for(int j=0;j<ca;j++)
    95.             tong[i][j] = a[i][j]+b[i][j];
    96.     }
    97.  
    98.     return 1;
    99. }
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 15-10-2008 lúc 10:45 AM. Lý do: Thêm comment
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Ai delete dùm mèo mấy cái cấp phát đó vậy ?

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Ai delete dùm mèo mấy cái cấp phát đó vậy ?
    Mình chỉ sửa lỗi sai chính thôi, mấy cái delete để tác giả tự thêm, làm biếng thêm quá .
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Mình chỉ sửa lỗi sai chính thôi, mấy cái delete để tác giả tự thêm, làm biếng thêm quá .
    [-x ! Don't be lazy man !! Sữa cũng phải sữa cho đúng và phải giải thích chứ đâu phải ai cũng trình độ như mèo đâu ! Làm vậy mấy cậu kia cứ nghĩ đúng thì sao được nà ! Don't be lazy cat :-" !

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Ma trận động !

    Ok, mình đã thêm vào delete rồi đó.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Thiệt là không dám phủ nhận trình độ của cậu tuy nhiên đọc rất nhiều bài help của cậu thì chỉ thấy cậu toàn chữa code để complie, không hề giải thích tại sao nó sai và ít nhất cho 1 gợi ý để họ có cách để học ! Giả nếu cậu cần giúp liệu quăng code không cậu có hiểu không ? Hay là cách help của mỗi người khác nhau ! Thôi thì tùy cậu vậy ! I don't feel like we need an fight here !

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

    Cảm ơn bạn mèo nha
    Mình so sánh code thì thấy đc mấy chổ bạn sửa rồi... ^^! thanks bạn nhìu
    ----
    cái chỗ GiaiPhong () là hàm làm free bộ nhớ phải hok nhỉ... thầy chưa chỉ cái này ^^!

  9. #9
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Hì hì, mình mắc bệnh làm biếng comment mà chữa mãi chưa xong. Mình đã thêm comment rồi đấy.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Code:
    int tich(int **mt1, int **mt2, int **&mt3, int d1, int c1, int d2, int c2)
    {	if(c1!=d2||c2!=d1)
    		return 0;
    	mt3=new int*[c1];
    	for(int i=0;i<c1;i++)
    	{	for(int j=0;j<d1;j++)
    		{	mt3[i][j]=mt1[i][j]*mt2[i][j];
    		}
    	}
    	return 1;
    }
    Vậy nếu sửa lại code thế này vậy có tính được tích ko?
    Chú ý: điều kiện để nhân hai ma trận: số cột của A = số dòng của B.
    Mình thử thêm code vào, nhưng nó chỉ xuất được đến tổng, tích cũng có gọi trong main ( if(tich....)), thế mà nó ko ra!!!!

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 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