bignum2

Upload: kuteboy290690

Post on 02-Mar-2016

2 views

Category:

Documents


0 download

TRANSCRIPT

  • INT2202 Lp trnh nng cao HKII, 2011-2012

    1

    Bi tp ln Phin bn 2, ngy 21/5/2012

    Ra : Hong Th ip ([email protected])

    S nguyn dng ln nht c th biu din bi kiu d liu c sn trong C++ l ULLONG_MAX = 18446744073709551615 (kiu unsigned long long di 8 byte), l s c 20 ch s. Trong thc t, ta c th cn lm vic vi cc s nguyn ln hn, v d: lu chnh xc kt qu 21!. Hy ci t lp BigNumber biu din s nguyn dng ln. tng biu din s nguyn dng ln l dng mt vector , mi phn t biu din mt cp ch s. V d 1: s n = 2345 th vector tng ng v c 2 phn t l v[0] = 45 v[1] = 23 T vector v, ta c th suy ra c gi tr n biu din l v[1] * 1001 + v[0] * 100

    v[0]

    0 V d 2: s m = 21! = 51090942171709440000 th vector tng ng l

    v[1] v[2] v[3] v[4] v[5] v[6] v[7] v[8] v[9] 0 0 44 9 17 17 42 9 9 51

    ci t cch lu tr ni trn, ta khai bo 1 bin thnh vin private ca lp BigNumber l vector digitpairs; Di y l giao din yu cu ca lp BigNumber class BigNumber BigNumber(); // Hm kin to mc nh, vector rng BigNumber(string value); // Hm kin to vector digitpairs t xu value lu s ln BigNumber(const BigNumber& n1); // Hm kin to sao chp, to s ln mi bng s ln n1

    // cho trc. C xt php t gn. ~BigNumber(); // Hm hy, xa tt c cc phn t trong digitpairs unsigned int length() const; // Tr v s ch s ca s ln string toString() const; // Tr v xu gi tr ca s ln friend ostream& operator(istream& in, BigNumber& number); // c gi tr t lung nhp vo s ln friend const BigNumber operator+(const BigNumber& n1, const BigNumber& n2); // Np chng php cng 2 s ln friend const BigNumber operator-(const BigNumber& n1, const BigNumber& n2); // Np chng php tr 2 s ln friend const BigNumber operator*(const BigNumber& n1, const BigNumber& n2); // Np chng php nhn 2 s ln friend const BigNumber operator/(const BigNumber& n1, const BigNumber& n2); // Np chng php chia 2 s ln friend const BigNumber operator%(const BigNumber& n1, const BigNumber& n2); // Np chng php tm d khi chia n1 cho n2 friend BigNumber& operator++(BigNumber& n1); // Np chng php t tng trc friend const BigNumber operator++(BigNumber& n1, int); // Np chng php t tng sau

  • INT2202 Lp trnh nng cao HKII, 2011-2012

    2

    friend BigNumber& operator--(BigNumber& n1); // Np chng php t gim trc friend const BigNumber operator--(BigNumber& n1, int); // Np chng php t gim sau BigNumber& operator=(const BigNumber& n1); // Gn s ln hin ti bng n1,

    // ng thi tr v gi tr ny unsigned char& operator[](unsigned int i); // Tr v ch s th i ca s ln hin ti (i >= 0) Gii thch thay i trong phin bn 2

    Php t tng/gim trc cho php biu thc dng ++x = BigNumber(123); // tng ng ++x = 123 vi kiu int Php t tng/gim sau khng cho php biu thc dng x++ = BigNumber(123); // tng ng x++ = 123 vi kiu int Php gn cho php biu thc dng chui x = y = BigNumber(123); // tng ng x = y = 123; vi kiu int Php truy cp n ch s th i cho php bin i ch s ny, v d: x[0] = 9; gn hng n v ca s x bng 9

    Yu cu np:

    Np cc file bi lm vo repository t tn l approject trn account bitbucket ca bn. Cn np t nht 3 files sau: o BigNumber.h v BigNumber.cpp o report.pdf m t cc thut ton dng ci t tng php ton trn s ln

    Thi gian lm: 4 tun (t 02/5 n 30/5). Sinh vin ng k lm bi tp ln (ti a 2 ngi/nhm) trc ngy 09/5 bng cch in tn vo form c gi vo email c

    nhn.

    Bi tp ln