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

Đề tài: [ Solved ]Cộng 2 dãy Binary

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    4

    Mặc định [ Solved ]Cộng 2 dãy Binary

    Đề bài: tạo lớp binary với 2 thuộc tính mảng + size, xây dựng hàm cộng 2 dãy binary, hàm xuất.
    Mình làm vẫn còn 1 số lỗi. các bạn sửa dùm mình nói mình biết lỗi sai vì mình cũng mới học C++.
    Code:
    #include <iostream>
    using namespace std;
    
    class BINARY
    {
    	int *arr;
    	int size;
    public:
    	BINARY(int n=32):arr(new int[n]),size(n){}
    	void nhap();
    	void Cong(BINARY b1,BINARY b2);
    	void Xuat() const;
    };
    
    void BINARY::nhap()
    {
    	
    	cout<<"nhap so phan tu: ";
    	cin>>size;
    	arr= new int[size];
    	for(int i=0;i<size;i++)
    	{	
    		cout<<"a["<<i<<"]";
    		cin>>arr[i];
    	}
    }
    
    void BINARY::Cong(BINARY b1,BINARY b2)
    {
    	int temp = 0;
    	if(b1.size==b2.size)
    		for(int i=b1.size; i>0; i--)
    		{
    			arr[i]= b1.arr[i] + b2.arr[i] + temp;
    		
    			if(arr[i]==1 || arr[i]==0) temp=0;
    			else if(arr[i]==2)
         		{ 
    			 	arr[i]=0;
    			 	temp=1;
    		 	}
         		else 
    		 	{ 
    			 	arr[i]=1;
    			 	temp=1;
    		 	}
    		}
    }
    
    void BINARY::Xuat() const
    {
    	for(int i=0;i<size;i++)
    		cout<<arr[i]<<" ";
    }
    
    int main()
    {
    	BINARY b1;
    	BINARY b2;
    	b1.nhap();
    	b2.nhap();
    	b1.Cong(b1,b2);
    	b1.Xuat();
    	return 0;
    }

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

    Mình đã sửa cho bạn rồi đây :

    C++ Code:
    1. #include <iostream>
    2. using namespace std;
    3.  
    4. class BINARY
    5. {
    6.     int *arr;
    7.     int size;
    8. public:
    9.     BINARY(int n=32):arr(new int[n]),size(n){}
    10.     void nhap();
    11.     void Cong(BINARY &b1,BINARY &b2);
    12.     void Xuat() const;
    13. };
    14.  
    15. void BINARY::nhap()
    16. {
    17.     cout<<"nhap so phan tu: ";
    18.     cin>>size;
    19.     arr= new int[size];
    20.     for(int i=0;i<size;i++)
    21.     {  
    22.         cout<<"a["<<i<<"]";
    23.         cin>>arr[i];
    24.     }
    25. }
    26.  
    27. void BINARY::Cong(BINARY &b1,BINARY &b2)
    28. {
    29.     int temp = 0;
    30.     int n;
    31.     int *p;
    32.  
    33.     if(b1.size <= b2.size)
    34.     {
    35.         n = b1.size;
    36.         p = b2.arr;
    37.     }
    38.     else
    39.     {
    40.         n = b2.size;
    41.         p = b1.arr;
    42.     }
    43.        
    44.     for(int i=0;i<n;i++) // sai cách duyệt vòng for
    45.     {
    46.         arr[i]= b1.arr[i] + b2.arr[i] + temp;
    47.    
    48.         if(arr[i] <= 1)
    49.             temp = 0;
    50.         else
    51.         {
    52.             arr[i] %= 2;
    53.             temp = 1;
    54.         }
    55.     }
    56.  
    57.     p[i] += temp;
    58. }
    59.  
    60. void BINARY::Xuat() const
    61. {
    62.     for(int i=size-1;i>=0;i--)
    63.         cout<<arr[i]<<" ";
    64. }
    65.  
    66. int main()
    67. {
    68.     BINARY b1;
    69.     BINARY b2;
    70.     b1.nhap();
    71.     b2.nhap();
    72.     b1.Cong(b1,b2);
    73.     b1.Xuat();
    74.     return 0;
    75. }

    Ngoài ra bạn cũng chưa có destructor để hủy vùng nhớ đã cấp phát.
    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
    11 2008
    Bài viết
    5

    Mình không hiểu hàm cộng của bạn lại 2 đối số nhỉ?
    mình nghĩ chỉ cần void cong ( Binary b) là được, vì khi đang ở 1 đối tượng thì không cần truyền chính nó vào nữa. Chút ý kiến !

  4. #4
    Ngày gia nhập
    01 2008
    Bài viết
    4

    Mình duyệt vòng for ngược bị sai chỗ
    Code:
     for(int i=b1.size; i>0; i--)
    đáng lẽ ra phải là
    Code:
     for(int i=b1.size-1; i>=0; i--)
    tại vì mình cộng 2 dãy nhị phân là cộng từ trái sang fai nên mình duyệt for ngược, còn giải thuật của bạn thì lại duyệt xuôi. Bài của mình chỉ sửa lại chỗ đó là có thể ra kết quả đúng. Cám ơn bạn đã giúp mình biết thêm 1 giải thuật mới. Hàm hủy vùng nhớ không phải là mình quên mà là mình không biết rõ, nên không dám viết. Bạn có thể viết cho mình coi được không?

  5. #5
    Ngày gia nhập
    01 2008
    Bài viết
    4

    cám ơn bạn long.bkiter07 đã góp ý. tại mình mới học C++ còn chưa hiểu rõ lắm.

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

    Mặc định [ Solved ]Cộng 2 dãy Binary

    @long.bkiter07: mình sửa code vội quá nên cũng quên ko để ý chỗ đó
    @wawa : hàm destructor có dạng như sau :
    C Code:
    1. BINARY::~BINARY()
    2. {
    3.    delete arr;
    4. }
    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 2007
    Bài viết
    54

    Cho mình hỏi cái : nếu khai báo là int *arr thì đây là mảng 1 chiều rồi thì nó có giống với bài toán cộng 2 đa thức ko ??
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

    Cho mình hỏi cái : nếu khai báo là int *arr thì đây là mảng 1 chiều rồi thì nó có giống với bài toán cộng 2 đa thức ko ??
    Nó khác với bài toán cộng hai đa thức vì đây thực sự là phép toán cộng 2 số với nhau. Phép toán cộng hai đa thức thì các đơn thức cùng bậc mới được cộng với nhau.

    Nếu như hiểu các đơn thức cùng bậc cộng với nhau và 2 đa thức có bậc giống nhau và phép cộng có nhớ thì đúng.

    Nói hơi loằng ngoằng nói chung là gần giống nhưng không thể lấy cái này áp dụng qua cái khác được

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

  1. Database Chuyển file bất kỳ thành Binary
    Gửi bởi trungdhdh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 09-09-2011, 01:16 PM
  2. Cài đặt Binary Search Tree bằng C#
    Gửi bởi Yin Yang trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 16-01-2011, 04:42 PM
  3. binary search bị lỗi , fix hộ mình với
    Gửi bởi c4u.ng0c trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 27-12-2010, 09:55 PM
  4. Cho hỏi cách đọc ghi file Nhị Phân binary
    Gửi bởi colo2xxx trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 29-07-2009, 04:40 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