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

Đề tài: Code xử lí phép toán trừ nhị phân bằng C++. Không ra kết quả đúng

  1. #1
    Ngày gia nhập
    04 2011
    Bài viết
    6

    Red face Code xử lí phép toán trừ nhị phân bằng C++. Không ra kết quả đúng

    C++ Code:
    1. #include<iostream>
    2. #include<string.h>
    3.  
    4. using namespace std;
    5.  
    6. class SoNP
    7. {
    8.       private:
    9.               char x[41],y[41],z[41];
    10.               int i;
    11.       public:
    12.              void nhap();
    13.              void tru();
    14.              void hien();
    15.              void sobu2(char []);
    16. };
    17. void SoNP::nhap()
    18. {    
    19.      cout<<"\nNhap so nhi phan A: ";cin>>x;
    20.      cout<<"\nNhap so nhi phan B: ";cin>>y;    
    21. }
    22. void SoNP::sobu2(char b[])
    23. {
    24.     int kt=0;
    25.     if (b[0]=='1')
    26.     {
    27.         kt=1;
    28.         int nho;
    29.         if (b[9]-1==-1)
    30.         {
    31.             b[9]='1';
    32.             nho=1;
    33.         }
    34.         else
    35.         {
    36.             b[9]='0';
    37.             nho=0;
    38.         }
    39.         for (int i=8;i>=0;i--)
    40.             if (b[i]-nho==-1)
    41.             {
    42.                 b[i]='1';
    43.                 nho=1;
    44.             }
    45.             else if (b[i]-nho==0)
    46.             {
    47.                 nho=0;
    48.                 b[i]='0';
    49.             }
    50.             else
    51.                 nho=0;
    52.  
    53.         for (int i=0;i<10;i++)
    54.             if (b[i]=='0')
    55.                 b[i]='1';
    56.             else
    57.                 b[i]='0';
    58.       }
    59. }
    60. void SoNP::tru()
    61. {
    62.      int nho=0;
    63.      for(i=9;i>=0;i--)
    64.      {
    65.                       if(x[i]-y[i]-nho==-1)
    66.                       {
    67.                            z[i+1]='1';
    68.                            nho=1;
    69.                       }
    70.                       else if(x[i]-y[i]-nho==0)
    71.                       {
    72.                            z[i+1]='0';
    73.                            nho=0;
    74.                       }
    75.                       else
    76.                       {
    77.                           z[i+1]=x[i]-y[i]-nho;
    78.                           nho=0;
    79.                       }        
    80.      }
    81.      if(nho==1)
    82.      z[0]='1';
    83. }
    84. void SoNP::hien()
    85. {
    86.      char z[41];
    87.      cout<<"\nA-B= "<<z<<endl;
    88. }
    89. int main()
    90. {
    91.     char x[41],y[41];
    92.     SoNP a;
    93.     a.nhap();
    94.     a.sobu2(x);
    95.    a.sobu2(y);
    96.     a.tru();
    97.     a.hien();
    98.    system("pause");
    99. }
    E chạy nhưng k ra kết quả!! Mọi người giúp e với! E xin cảm ơn!
    Đã được chỉnh sửa lần cuối bởi Yoh : 09-10-2011 lúc 02:48 PM.

  2. #2
    Ngày gia nhập
    03 2010
    Nơi ở
    Nơi nào đó trong vũ trụ
    Bài viết
    550

    Bạn xem lại đoạn code này:
    C++ Code:
    1. if (b[0]==1)
    2. {
    3. ...
    4. }
    Có phải là nhầm lẫn ko, và có phải ý bạn là thế này:
    C++ Code:
    1. if (b[0]=='1')
    2. {
    3. ...
    4. }
    Gió thu lạnh lẽo hắt hiu lòng!

  3. #3
    Ngày gia nhập
    08 2011
    Bài viết
    6

    Các biến x,y,z của bạn là kiểu char , biến nho là kiểu int , sao bạn lấy 2 cái này mà thực hiện các operator với nhau dc .

  4. #4
    Ngày gia nhập
    04 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi birthis Xem bài viết
    Bạn xem lại đoạn code này:
    C++ Code:
    1. if (b[0]==1)
    2. {
    3. ...
    4. }
    Có phải là nhầm lẫn ko, và có phải ý bạn là thế này:
    C++ Code:
    1. if (b[0]=='1')
    2. {
    3. ...
    4. }
    Mình đã sửa lại! Nhưng nó k hiện ra kết quả!

  5. #5
    Ngày gia nhập
    04 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi PhuongPH Xem bài viết
    Các biến x,y,z của bạn là kiểu char , biến nho là kiểu int , sao bạn lấy 2 cái này mà thực hiện các operator với nhau dc .
    Vậy mình phải làm thế nào hả bạn?? Thuật toán thì mình nghĩ ra r, nhưng viết code thấy sai tùm lum quá!! Bạn debug giúp mình đc k?? Cảm ơn bạn! :X:X

  6. #6
    Ngày gia nhập
    03 2010
    Nơi ở
    Nơi nào đó trong vũ trụ
    Bài viết
    550

    Mặc định Code xử lí phép toán trừ nhị phân bằng C++. Không ra kết quả đúng

    Trích dẫn Nguyên bản được gửi bởi Yoh Xem bài viết
    Mình đã sửa lại! Nhưng nó k hiện ra kết quả!
    Bạn sửa thế cũng như không. Ví dụ đoạn này:
    Code:
    if (b[9]-1==-1)
    b[i] là 1 char, tốt nhất là bạn so sánh nó với 1 char, chứ viết như trên là sai rồi.
    Viết lại như thế này:
    Code:
    if (b[9] == '0')
    Mà mình nghĩ lấy bù 2 của bạn sao lại phức tạp thế.
    Theo thuật toán là đảo bit tất cả chuỗi đầu vào rồi cộng thêm 1 và chuỗi đã đảo bit là được bù 2 rồi mà.
    Gió thu lạnh lẽo hắt hiu lòng!

  7. #7
    Ngày gia nhập
    04 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi birthis Xem bài viết
    Bạn sửa thế cũng như không. Ví dụ đoạn này:
    Code:
    if (b[9]-1==-1)
    b[i] là 1 char, tốt nhất là bạn so sánh nó với 1 char, chứ viết như trên là sai rồi.
    Viết lại như thế này:
    Code:
    if (b[9] == '0')
    Mà mình nghĩ lấy bù 2 của bạn sao lại phức tạp thế.
    Theo thuật toán là đảo bit tất cả chuỗi đầu vào rồi cộng thêm 1 và chuỗi đã đảo bit là được bù 2 rồi mà.
    Bạn rảnh viết dùm mình nha!! Mình k biết đổi dấu bit nên làm theo cách này! Ai ngờ sai cơ bản!

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

  1. Code đếm khoảng trắng chạy lỗi kiểm tra không ra đúng kết quả?
    Gửi bởi higushima trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 27-11-2011, 08:15 PM
  2. code thuật toán radix sort bằng C, kết quả không đúng. Mọi người sửa giúp với?
    Gửi bởi yeulamvietnam trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 24-11-2011, 11:55 PM
  3. Code tỉnh tổng phân số trên C++. Kết quả in ra không đúng?
    Gửi bởi vietanh_90 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 4
    Bài viết cuối: 26-11-2010, 03:14 PM
  4. Code bài tập Niuton tiến trên lưới đều ra kết quả không đúng, sửa như thế nào?
    Gửi bởi MrChicKen_NAD 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: 04-05-2009, 11:56 PM
  5. Code bài toán đổi tiền cho máy ATM bằng C++. Không ra được kết quả đúng?
    Gửi bởi th49.tl trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 12-04-2009, 11:24 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