probleme de limitation de variables en C++

probleme de limitation de variables en C++ - Programmation

Marsh Posté le 12-02-2001 à 18:32:57    

Salut, tout le monde !!!
 
bon, voila, je vais vous expliquer mon probleme :
j'ai fais un tout petit programe en c++ mais il me pose probleme.
en effet, c un programme qui teste si le nmobre doné est premier (rien de plus classique). Seulement je voudrais pouvoir tester des nombres bien plus grand que 4294967295 ce que les variables long unsigned int ne me permettent pas...
comment faire ?
 
j'avais pensé a un tableau qui se remplirait en fonction du nombre de chiffres du nombre donné mais je ne sais pas comment appliquer.
 
Quelqu'un aurait une solution svp pour me permettre de travailler sur de tres grands nombres ?
 
Merci @+
 
----------------------------
Plus tu pedales moins vite
Moins tu avances plus vite

 

--Message édité par FMulder--

Reply

Marsh Posté le 12-02-2001 à 18:32:57   

Reply

Marsh Posté le 12-02-2001 à 18:58:25    

C'est pas spécifique au c++ et en fait c'est à toi de définir un système pour gérer les grands nombres.
Par exemple (mais c'est pas forcément le plus efficace) tu décomposes ton nombre en base 10^9 et tu le stockes dans un tableau/liste.
Evidemment il faut alors définir pour ce format toutes les opérations arithmétiques nécessaires.

Reply

Marsh Posté le 12-02-2001 à 19:20:44    

ok, ya qqun qui serait pret a m'exliquer comment faire ca ou qui aurait un article montrant comment faire parce que je debute quand meme alors j'ai un peu du mal...
je comprends le concept mais c la mise en oeuvre qui me gene...
 
Merci
 
----------------------------
Plus tu pedales moins vite
Moins tu avances plus vite
----------------------------
http://www.digitalworld.fr.fm
----------------------------

Reply

Marsh Posté le 12-02-2001 à 19:30:53    

Y avait des étudiants de l'Epita qui avaient posté sur ce sujet il y a quelques semaines parce que c'était un de leur exo à faire.
Ils doivent avoir codé quelques trucs.
T'as plus qu'à espérer qu'ils voient ton post :D

Reply

Marsh Posté le 12-02-2001 à 19:54:47    

Il suffit juste que tu crees une classe
 
tu aurais:
classe grosse_variable
{
int poids_fort;
int poids_faible;
/* constructeurs-destructeurs */
}
 
et apres tu crees les fonctions membres pour manipuler la classe.
Par ex tu surcharges les operateurs +,-,+,/,&,|,^ pour faire les calculs avec les int, char (par ex). Mais le gros du travail est de l'analyse sur la manipulation du poids faible et poids fort(je l ai fait pour des nombres sur 64bits...mais faut que je retrouve ca...) des que je retrouve ca je mets sur #forum

Reply

Marsh Posté le 12-02-2001 à 23:23:00    

Recherche "bistromatique" sur le forum programmation, et tu trouveras ce qu'il te faut...

Reply

Marsh Posté le 13-02-2001 à 03:03:44    

Sous l'API Windows et en VC++ tu peut utiliser les LARGE_INTEGER ce qui revient a faire la decomposition en poid fort/aible sur 32bits chacun.


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 13-02-2001 à 03:11:07    

Oups j'oubliais, et tu a acces a l'ensemble (via Quadpart si je me souvient bien) a la varaible complete et donc pas besoin de refaire tes propres operations pour s'en servir.


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 13-02-2001 à 13:31:05    

VisualC++ a écrit a écrit :

Sous l'API Windows et en VC++ tu peut utiliser les LARGE_INTEGER ce qui revient a faire la decomposition en poid fort/aible sur 32bits chacun.




Quel est l'interet des LARGE_INTEGER puisque les int et les long font deja 32 bits et en plus sont portables (VC++)!

Reply

Marsh Posté le 13-02-2001 à 13:32:01    

certain compilo gerent des long long de 64 bits
c'est le cas de VC++ me semble t il .

Reply

Marsh Posté le 13-02-2001 à 13:32:01   

Reply

Marsh Posté le 13-02-2001 à 13:58:28    

LARGE INTEGER ils sont sur 64 bits (2 * 32), j'ai pas du parler cliarement (dsl il etait tard ;))


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 13-02-2001 à 14:23:28    

Je ne vois pas pourquoi vous parlez de 64 bits. A priori il doit souhaiter dépasser 2^64.

Reply

Marsh Posté le 13-02-2001 à 14:25:20    

Euh le chiffre qu'il a donne c'est 32 bits donc saufd precision supplementaire on suppose qu'il veut 64bits en precision, non ?


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 13-02-2001 à 17:05:59    

Salut,
 
si tu veux faire un programme valable, il vaut meixu que tu récupère sur le net une bibliothque mathematique avec des types etendus. C'est un vieux problème et ça fait longtemps qu'il a été résolu donc pas la peine de réinventer la roue.


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 13-02-2001 à 23:26:09    

n0mad a écrit a écrit :

Salut,
si tu veux faire un programme valable, il vaut meixu que tu récupère sur le net une bibliothque mathematique avec des types etendus. C'est un vieux problème et ça fait longtemps qu'il a été résolu donc pas la peine de réinventer la roue.




Sauf que les algorithmes qu'on trouve sur le Net ne sont pas forcément d'une super-efficacité. J'ai testé pour vous, précisément sur ce sujet-là...  :sarcastic:

Reply

Marsh Posté le 01-03-2001 à 00:39:55    

Merci tou t le monde, desolé de pas avoir repondu rapidement, vacances oblige... ;-)
C'est vrai, en fait le but du schmilblick ca serait de permettre a l'utilissateur de rentrer un nombre sans limite de taille...
il faudrait donc quand il l'a rentré que je teste le nombre de chiffres et que je le decoupe en morceau de 32 bits puis que je fasses les tests apres.
Je vais voir ce que je peux faire...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed