Tesulakata
Tổng số bài gửi : 141 Experience : 240 Đã được cảm ơn : 1 Join date : 18/05/2011 Age : 48 Đến từ : Heaven
| Tiêu đề: CLASS SỐ LỚN TRONG C++---- đề 01_ c++ Thu Jul 07, 2011 9:52 pm | |
| | | | | CLASS SỐ LỚN TRONG C++
- Code:
-
#include <iostream> #include <cstring> #include <string> #include <algorithm> #include<conio.h>
using namespace std;
class BigNum { private : string str; public : BigNum operator = (const BigNum b) { str = b.str; return (*this); }
friend BigNum operator + (BigNum a,BigNum b) {
BigNum c;
while ( a.str.length() < b.str.length() ) a.str='0'+a.str; while ( b.str.length() < a.str.length() ) b.str='0'+b.str;
int nho=0,t=0;
for(int i=a.str.length()-1; i>=0; i--) { t=a.str[i]-'0'+b.str[i]-'0'+nho; nho=t/10; c.str=char(t%10+'0')+c.str; }
if (nho>0) { c.str=char(nho+'0'); }
return c; }
friend BigNum operator - (BigNum a,BigNum b);//////////// friend istream& operator >> (istream& is , BigNum& a) { is >> a.str; return is; }
friend ostream& operator << (ostream& os , BigNum& a) { os << a.str; return os; } }; BigNum operator - (BigNum a,BigNum b) {
BigNum c;
while ( a.str.length() < b.str.length() ) a.str='0'+a.str; while ( b.str.length() < a.str.length() ) b.str='0'+b.str;
int nho=0,h=0,Sign=1;
if (a.str<b.str) { Sign=0; swap(a.str,b.str); }
//cout << b.str << endl;
for(int i=a.str.length()-1; i>=0; i--) { h=a.str[i]-b.str[i]-nho; if (h<0) { nho=1; h+=10; } else nho=0; //cout << h << endl; c.str=char(h+'0')+c.str; }
if (!Sign) { c.str='-'+c.str; }
while ( c.str.length()>1 && c.str.find('0') == 0 ) { c.str.erase(c.str.find('0'),1); }
return c; } int main() {
BigNum a,b; cin >> a; cin >> b;
BigNum c; c=a+b; cout << c << endl; c=a-b; cout << c << endl; getch(); return 0; }
Mưa mới đau
ngồi trong nhà thì không thích vừa kê được cái bàn ra giữa trời thì mưa
nhục quá đi [code] | | | |
|
|