next up previous
Next: Bag Up: Advanced examples Previous: Advanced examples

Big integer

The purpose of that class is to store an arbitrary number of digits in a user defined type, and make some basic operation on that. This is an easy starting - no templates, no exceptions.

/*
 *  main.cc   - the client code for class Bigint
 *  (C) Porkolab Zoltan, ELTE, Budapest, Hungary
 *  (C) 1998
 */

#include <iostream>
#include "bigint"

class BigintCnt : public Bigint
{
public:
    BigintCnt( const char *s) : Bigint(s) { ++cnt; }
    BigintCnt( const Bigint &rhs) : Bigint(rhs) { ++cnt; }
    ~BigintCnt() { --cnt; }
    static int get_cnt() { return cnt; }
    int mark_five( int arg = 5 )  { return arg - 1; }
private:
    static int cnt;
};
int BigintCnt::cnt = 0;

int main()
{
    int iMark(1);
    
/* 2-es
    Bigint b1("1999" "1999" "1999" "1999" "1999");
    iMark = (++b1)[4];	    // jobbrol 4-ik szamjegy int erteke
*/

/* 3-as
    Bigint b2("2000");
    Bigint b3 = b2;
    iMark += static_cast<int>(b3 - 1999);   // b3 erteke	
*/

/* 4-es
    Bigint *bip = new BigintCnt("9999");
    iMark += BigintCnt::get_cnt();   // hany BigintCnt objektum el
    delete bip;
    iMark -= BigintCnt::get_cnt();   // hany BigintCnt objektum el
*/
 
/* 5-os
    bip = new BigintCnt("5555");
    if ( bip->Bigint::mark_five() != 5 )
    {
	iMark = bip->mark_five();
    }
*/
    cout << "Your mark is " << iMark << endl;
    return 0;
}



Porkoláb Zoltán 2001-09-03