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

Đề tài: [ Solved ]Hàm cộng 2 số lớn dùng mảng int

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

    Mặc định [ Solved ]Hàm cộng 2 số lớn dùng mảng int

    debug giup em bài này xem sai chỗ nào vậy
    Hàm cộng 2 số lớn( mới chỉ dùng cho số dương đã sai )
    giúp em thêm phần số âm với
    class solon với thành phần là int number và int digit[50]
    Code:
    solon solon::add(solon a)
    {
          int n;
          if (number>a.number)
          {
                n=number;
                for (int i=0;i<n;i++)
                {
                    if (i>a.number) a.digit[i]=0;
                    }
          }
          else 
          {
               n=a.number;
               for (int i=0;i<n;i++) 
               if (i>number) digit[i]=0;
          }
          solon temp;
          int du = 0;
          for (int i=number;i>=0;i--)
          {
              if (i==0) temp.digit[i]=a.digit[i]+digit[i]+du;
              else if (i==number) temp.digit[i]=(a.digit[i]+digit[i])%10;
              else
              {
              temp.digit[i]=(((a.digit[i]+digit[i])%10)+du)%10;
              du=int(a.digit[i]+digit[i])/10;
              }
          }
          temp.number=number;
          return temp;         
    }

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

    Bạn nhờ debug giúp mà chỉ đưa một đọan code như thế này thôi thì làm gì được ? Lẽ ra bạn phải đem cả project lên chứ.
    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
    06 2008
    Bài viết
    25

    Trước hết bạn bỏ number ra khỏi class của bạn vì đây là biến dư. Sau đó thì dùng cái mảng digit kiểu như thế này.
    Số 0 thì màng này là {0, 0, 0, .... 0}
    Số 123 thì mảng này là {0, 0, ..., 0, 1, 2, 3}
    Số 123456 thì mảng này là {0, 0, ..., 0, 1, 2, 3, 4, 5, 6}

    Lúc đó sẽ ko cần number để kiểm soát và cũng ko cần đoạn này trong hàm add
    PHP Code:
          int n;
          if (
    number>a.number)
          {
                
    n=number;
                for (
    int i=0;i<n;i++)
                {
                    if (
    i>a.numbera.digit[i]=0;
                    }
          }
          else 
          {
               
    n=a.number;
               for (
    int i=0;i<n;i++) 
               if (
    i>numberdigit[i]=0;
          } 
    Sau đó chỉ việc thực hiện cho chạy cộng dồn từ hàng đơn vị trở về trước for (int i = 49; i >= 0; i--)

    PHP Code:
    solon sum 0;

    for (
    int i 49>= 0i--)
    {
        
    sum.digit[i] += (this->digit[i] + a.digit[i]) % 10;
        
    sum.digit[i-1] += (this->digit[i] + a.digit[i]) / 10;
    }

    return 
    sum
    Đã được chỉnh sửa lần cuối bởi Lugiavn : 19-10-2008 lúc 12:41 AM.

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

    Vậy muốn thêm dấu + hoăc - thì trong constructor khai báo thế nào vậy?
    Em cũng chưa nghĩ dc cách cho dấu đó vào chư thế nào

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

    Làm vầy nè bạn :
    C++ Code:
    1. solon & operator + (solon &sl)
    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.

  6. #6
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    Mặc định [ Solved ]Hàm cộng 2 số lớn dùng mảng int

    Đó là "nạp chồng toán tử". Đành rằng đã giúp thì nên giúp cho trót nhưng bạn thử google cái từ khóa trên, ra một đống.

    ------------------
    Ngoài lề: Sáng nay bị hâm sao mà đi post bài lắm thế này, mạng nhanh -> tinh thần thoải mái. Mấy hôm Cvieetj được thế này.
    Phá toái hư không - Bạch nhật thăng thiên.

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

    theo như cô gợi ý thì khởi tạo digit[0] là âm hoặc dương gì đó nhưng em vẫn chưa hình dung nó như thế nào.
    a có thể chỉ giúp em cách đó dc ko?

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

    Có nhiều cách để diễn tả số âm : đặt biếnn cờ dấu riệng, dùng phần tử đầu hoặc cuối mảng làm biến cờ dấu. Mình nghĩ cách của cô bạn là yêu cầu lấ phần tử đầu tiên để làm cơ dấu.
    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.

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

    vậy phải làm như thế nào đây
    mình vẫn chưa biết nó như thế nào
    bạn có thể ví dụ ko?

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

    Cái này là cách biểu diễn thôi, thí dụ bạn biểu diễn số -1234 thì mảng digit sẽ có dạng :
    C Code:
    1. digit[0] = -1; // cái này tùy bạn quy ước, ở đây mình quy ước -1 là âm, 1 là dương
    2. digit[1] = 4;
    3. digit[2] = 3;
    4. digit[3] = 2;
    5. digit[3] = 1;
    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.

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

  1. [ Solved ]Đối tượng hằng, phương thức hằng!!! Khi nào cần dùng ???
    Gửi bởi camping29 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 18-11-2008, 12:50 AM
  2. [ Solved ]Chỉ dùng một đối tượng A?
    Gửi bởi hahonga3 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 17
    Bài viết cuối: 14-11-2008, 09:51 PM
  3. [ Solved ]Lỗi khi dùng template
    Gửi bởi kidyboy2003 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 13-10-2008, 01:01 AM
  4. [ Solved ]Lỗi khi dùng dịch bằng Dev C++
    Gửi bởi Huyx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 25-09-2008, 10:20 AM
  5. [Solved]lập trình cho hệ thống nhúng dùng C/C++
    Gửi bởi luon07 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 14-03-2008, 10:09 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