آموزش ++C آموزش و سورس های برنامه نویسی به زبان ++C |
||||||||||||||||||||||||||||||||||||
شنبه 9 ارديبهشت 1391برچسب:, :: 21:15 :: نويسنده : کیوان مجنونی
برای جمع اعدادی که در محدوده ی قابل ذخیره در مبنا 32 اعداد int نباشند، باید به صورت نرم افزاری عمل کرد. در زیر برنامه ای ارائه شده که با استفاده از وکتور های یک بعدی دو عدد بسیار بزرگ (Huge Integer) را با یکدیگر جمع میکند.
//This program gets the sum of two huge integer numbers.
#include #include #include int main() { vector 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+"< { if(ch>='0'&& ch<='9') { cout.put(ch); ch-=48; num2.push_back(ch); } } cout<<"\n="< 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< } //end
نظرات شما عزیزان:
آخرین مطالب آرشيو وبلاگ پیوندهای روزانه پيوندها
![]() نويسندگان
|
||||||||||||||||||||||||||||||||||||
![]() |