عضویت العربیة English
پیامبر اکرم صلّی الله علیه و آله: نزدیک‌ترین شما به من در روز قیامت، کسانی هستند که در دنیا بیشتر از دیگران بر من صلوات فرستند.

سورس برنامه جمع دو عدد خیلی بزرگ با vector در C++

سورس برنامه جمع دو عدد خیلی بزرگ با vector در C++
دوشنبه 20 تیر 1390  06:55 ب.ظ

برای جمع اعدادی که در محدوده ی قابل ذخیره در مبنا 32 اعداد int نباشند، باید به صورت نرم افزاری عمل کرد. در زیر برنامه ای ارائه شده که با استفاده از وکتور های یک بعدی دو عدد بسیار بزرگ (Huge Integer) را با یکدیگر جمع میکند.


#include <iostream.h>
#include <conio.h>
#include <vector.h>

int main()
{
    vector <char> num1,num2,result;
    cout<<"Enter tow huge integer numbers to get the sum of them.\n";
     cout<<"Enter number one and press enter key.\n\n";
     char ch;
     while((ch=getch())!=13)
      {
          if(ch>='0'&& ch<='9')
            {
                cout.put(ch);
                ch-=48;
                num1.push_back(ch);
            }
      }
     cout<<"\n+"<<endl;
     while((ch=getch())!=13)
      {
          if(ch>='0'&& ch<='9')
            {
                cout.put(ch);
                ch-=48;
                num2.push_back(ch);
            }
      }
    cout<<"\n="<<endl;
    int min_size;
    min_size = num1.size() < num2.size() ?
               num1.size() : num2.size();
    bool carry=0;
    while(min_size>0)
     {
       if(num1.back()+num2.back()+carry<10)
        {
         result.push_back(num1.back()+num2.back()+carry);
         num1.pop_back();
         num2.pop_back();
         carry=0;
        }
       else
        {
    result.push_back((num1.back()+num2.back()+carry)%10);
         num1.pop_back();
         num2.pop_back();
         carry=1;
        }
      min_size--;
     }
   while(num1.size()!=0)
    {
      if(num1.back()+carry<10)
       {
           result.push_back(num1.back()+carry);
           num1.pop_back();
           carry=0;
        }
      else
        {
           result.push_back((num1.back()+carry)%10);
           num1.pop_back();
           carry=1;
        } 
    }
  while(num2.size()!=0)
    {
      if(num2.back()+carry<10)
        {
           result.push_back(num2.back()+carry);
           num2.pop_back();
           carry=0;
        }
      else
        {
           result.push_back((num2.back()+carry)%10);
           num2.pop_back();
           carry=1;
        }  
     }
   if(carry==1)
      result.push_back(1);
   while(result.size()>0)
    {
        cout.put(result.back()+48);
        result.pop_back();
    }
   cout<<endl;
  return 0;
} 
//end

***به بهشت نمی روم اگر مــــــادرم آنجا نباشد***

آنگاه که تنها شدی و در جست جوی یک تکیه گاه مطمئن هستی ، بر من توکل نما . نمل/79

 

mehdigerdali

mehdigerdali
کاربر طلایی1
تاریخ عضویت : خرداد 1390 
تعداد پست ها : 5587
محل سکونت : خوزستان

پاسخ به:سورس برنامه جمع دو عدد خیلی بزرگ با vector در C++
پنج شنبه 23 تیر 1390  01:03 ب.ظ

ممنون. استفاده کردیم.

 

cryingsphere

cryingsphere
کاربر نقره ای
تاریخ عضویت : اسفند 1389 
تعداد پست ها : 375
محل سکونت : خراسان رضوی
دسترسی سریع به انجمن ها