Big signed integer

Description

Un entier de taille non definie. Je poste le code du header, histoire de vous donner une idée.

Source / Exemple :


#ifndef BIGINT_INC
#define BIGINT_INC

#include <assert.h>
#include <iostream>
#include <list>

#ifndef MAX
#define MAX(a,b) ((a>b)?a:b)
#endif

#ifndef MIN
#define MIN(a,b) ((a<b)?a:b)
#endif

class BigInt
{
public:
	typedef unsigned char Byte;

	BigInt();
	~BigInt();
	BigInt(const BigInt & br);
	BigInt(unsigned int i);

	void operator = (const BigInt & br);
	void operator = (unsigned int i);
	void operator = (int i);

	BigInt operator * (const BigInt & br)const;
	BigInt operator * (unsigned int i)const;
	BigInt operator * (Byte b)const;
	BigInt operator + (unsigned int i)const;
	BigInt operator + (const BigInt & br)const;
	BigInt operator - (const BigInt & br)const;
	BigInt operator - ()const;

	BigInt operator << (unsigned int i) const;

	void operator *= (const BigInt & br);
	void operator *= (unsigned int i);
	void operator += (const BigInt & br);
	void operator += (unsigned int i);
	void operator -= (const BigInt & br);
	void operator -= (unsigned int i);
	
	void operator /= (const BigInt & br);
	void operator ++ ();
	void operator -- ();

	bool operator ==(const BigInt & br)const;
	bool operator !=(const BigInt & br)const;
	bool operator <(const BigInt & br)const;
	bool operator >(const BigInt & br)const;
	bool operator <=(const BigInt & br)const;
	bool operator >=(const BigInt & br)const;

	static void div(BigInt & q, BigInt & r, const BigInt & f, const BigInt & d);
	static BigInt gcd(BigInt & a, BigInt & b);

	void print(std::ostream & out)const;

	double to_double() const;

	static void test();
private:
	
	std::list<Byte> data_;
	bool positiv_;
};
inline std::ostream & operator << (std::ostream & out, const BigInt & bi){
	bi.print(out);
	return out;
}
#endif

Conclusion :


Bug connu (!) : l'affichage par la fonction print est en hexa ... Y en a que ca derrange ? :)

Bug inconnus : yup, pleins ! enfin, j'espere que non ...

J'ai aussi une classe Fraction qui est le rapport de 2 de ces BigInt. Mais le code est encore buggy...

Sinon, l'algo de la division est vraiment TRES POURRIS ! (comprendre PAS RAPIDE)

tib

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.