Hi
i'm new to c++ i have the class num for big unsigned numbers
it seems work ok until now and i want extend the numbers to big-signed
and big-float
typedef struct{
unsigned len;
unsigned* n;
}num_;
/* big integer unsigned */
class num{
friend int operator==(cons t num& a, const num& b);
............... ..............
friend num& operator+(const num& a, const num& b);
............... ..............
friend num& operator+(const num& a, unsigned b);
............... ..............
public:
num();
num(double);
num(num&r );
.............
private:
num_ numer;
unsigned lm;
}
// i have write a the definition of class snum
// big integer signed
class snum{
public:
snum();
snum(double);
snum(num&r );
.............
private:
num sn;
int sign;
}
// i have written a definition of class fnum
// big float
class fnum{
public:
fnum();
fnum(double);
fnum(num&r );
.............
private:
snum fn;
unsigned fdigit;
}
Do you see some better way to build the classes fnum and snum by class
num?(and why)
then i have a little problem i have something like
static fnum z[10];
i have the need to write
num g("444555");
z[1].nf.ns=g
or something like
z[1].nf.ns.numer.n[0]=7;
or
z[1].nf.ns.numer.le n =7;
*in a function member of num*
and suppose something like
snum& operator+(snum& a, snum& b);
{int j=index();
if(a.sign==1)
{if(b.sign==1)
{z[j].nf.ns.sign= 1; z[j].nf.ns.n= a.ns.n + b.ns.n;}
else if(a.ns.n > b.ns.n)
{z[j].nf.ns.sign= 1; z[j].nf.ns.n= a.ns.n - b.ns.n;}
else {z[j].nf.ns.sign=-1; z[j].nf.ns.n= b.ns.n - a.ns.n;}
}
else {if(b.sign==-1)
{z[j].nf.ns.sign=-1; z[j].nf.ns.n= a.ns.n + b.ns.n;}
else if(a.ns.n > b.ns.n) // b.sign=+1
{z[j].nf.ns.sign=-1; z[j].nf.ns.n= a.ns.n - b.ns.n;}
else {z[j].nf.ns.sign= 1; z[j].nf.ns.n= b.ns.n - a.ns.n;}
}
return z[j].nf.ns
}
How to do it? (compiler says i can not enter from fnum to snum)
Do you see some error?
Thank you