Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3184 connectés 

  FORUM HardWare.fr
  Programmation

  [c] Comment stocker un TRES TRES gros entiers?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c] Comment stocker un TRES TRES gros entiers?

n°75742
mario51
Posté le 26-11-2001 à 19:58:41  profilanswer
 

Salut,  
 
Je cherche un type qui permet de stocker un entier positif qui est trop gros pour le type int et le type long.
 
D'avance merci!

mood
Publicité
Posté le 26-11-2001 à 19:58:41  profilanswer
 

n°75744
davidmarli
Posté le 26-11-2001 à 20:04:17  profilanswer
 

salut,
 
ben qu'est ce que tu appelles gros dèjà !!! 3000 chiffres ???
En tout cas, tu peux "couper" ton entier en plus petit morceau : je m'explique :
genre tu as 1234567899876543211234512345
Ben tu déclare un certains nobres d'entiers en mettant tes bouts du gros entier dedans genre
a=123456
b=789987
c=654321
d=....
 
Sinon, tu peux faire une liste chianée dan laquelle chaque alvéole, contient un des chiffres de ton entier!!!
voilà


---------------
Matheux Fou - https://afficheur-tempo.fr - TEMPO BOX pour abonnés TEMPO EDF
n°75747
mario51
Posté le 26-11-2001 à 20:09:06  profilanswer
 

Le probleme est que je dois pouvoir manipuler ce nombre et en particulier le convertir en binaire. (le programme est fait, mais il ne marche que pour des "petits nombres"
 
la taille est d'environ 20, 25 chiffres!
 
a+

n°75765
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-11-2001 à 21:23:37  profilanswer
 

soit tu crées une classe avec redéfinitions d'operateurs (j'ai deja du faire ca pour l'ecole), soit tu utilises des entiers sur 64 bits (c'est peut-être pas dispo partout, en delphi c'est in64), mais pour plus de 20 chiffres ça ira pas...
pour le truc de la classe, on en parle régulièrement dans le forum, et y a eu un topic y a moins d'une semaine.

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°75768
mario51
Posté le 26-11-2001 à 21:32:04  profilanswer
 

antp a écrit a écrit :

soit tu crées une classe avec redéfinitions d'operateurs (j'ai deja du faire ca pour l'ecole), soit tu utilises des entiers sur 64 bits (c'est peut-être pas dispo partout, en delphi c'est in64), mais pour plus de 20 chiffres ça ira pas...
pour le truc de la classe, on en parle régulièrement dans le forum, et y a eu un topic y a moins d'une semaine.  
 
 




 
On peut faire des classes en C ???
 
Si quelqu'un peut m'expliquer, voire me donner un exemple...
 
On m'a parler de creer une structure, mais j'ai du mal à voir comment...

n°75794
mario51
Posté le 26-11-2001 à 22:56:38  profilanswer
 

:(

n°75795
antp
Super Administrateur
Champion des excuses bidons
Posté le 26-11-2001 à 22:57:22  profilanswer
 

heu, non désolé, si c'est du C pur pas de classes, c'est en C++ qu'on peut faire des classes.
Mais bon ça doit quand même être faisable (tableaux, fonctions, ...)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°75878
Carbon_14
Posté le 27-11-2001 à 09:38:29  profilanswer
 

Une fois le grand nombre dans une chaîne, on peut faire la division Euclidienne caractère par caractère (comme à la main). Y a eu un sujet la dessus y a un certain temps ... ;)

n°75880
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 27-11-2001 à 09:40:35  profilanswer
 

mario51 a écrit a écrit :

Le probleme est que je dois pouvoir manipuler ce nombre et en particulier le convertir en binaire. (le programme est fait, mais il ne marche que pour des "petits nombres"
 
la taille est d'environ 20, 25 chiffres!
 
a+  




 
Faudrait déjà savoir si tu manipules des entiers ou des flottants.
 
Ensuite il me semble qu'avec un long double en borland C sous dos on atteint 80 bits...
 
ps : ooops j'avais mal lu l'énoncé:D... regarde si il n'y a pas des double int.

 

[edtdd]--Message édité par fodger--[/edtdd]


---------------
Just drink it!
n°75888
Fouge
Posté le 27-11-2001 à 10:20:32  profilanswer
 

En C, tu peut utiliser INT_64 :)
ex: INT_64 nb; //entier sur 64bit

mood
Publicité
Posté le 27-11-2001 à 10:20:32  profilanswer
 

n°75889
gilou
Modérateur
Modzilla
Posté le 27-11-2001 à 10:21:37  profilanswer
 

Avec un TRES TRES gros HD? :D
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°75897
karlkox
Posté le 27-11-2001 à 11:06:57  profilanswer
 

J'etais pres a proposer "long long" mais ca revient au meme que d'écrire INT_64, histoire de gout :)

n°75900
gilou
Modérateur
Modzilla
Posté le 27-11-2001 à 11:18:08  profilanswer
 

KarLKoX a écrit a écrit :

J'etais pres a proposer "long long" mais ca revient au meme que d'écrire INT_64, histoire de gout :)  




long long, c'est du C standard (C99), contrairement a int_64 que je sache.
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°75909
antp
Super Administrateur
Champion des excuses bidons
Posté le 27-11-2001 à 11:35:45  profilanswer
 

de toute façon, la question était pour 20, 25 chiffres... 64 bits ça fait 19 chiffres (bon 20 mais le premier doit etre un 1) en non signé... donc ça va pas.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°75955
karlkox
Posté le 27-11-2001 à 14:53:54  profilanswer
 

Gilou>justement, mario code en C et a choisir, je préfere me plier a quelque chose de normaliser :)

n°75975
BIGBEN49
Posté le 27-11-2001 à 15:56:42  profilanswer
 

La solution est simple.
TU calcule combien de bits il te faut pour stocker ton entier...
 
et tu definit un entier comme suit:
unsigned int NB:X
 
NB: le nom de ta variable.
X: Le nombre de bit ki vont etre utiliser en memoir pour stocker ton entier....
 
et voila  ;)

n°76070
mario51
Posté le 27-11-2001 à 19:57:00  profilanswer
 

bigben49 a écrit a écrit :

La solution est simple.
TU calcule combien de bits il te faut pour stocker ton entier...
 
et tu definit un entier comme suit:
unsigned int NB:X
 
NB: le nom de ta variable.
X: Le nombre de bit ki vont etre utiliser en memoir pour stocker ton entier....
 
et voila  ;)  




 
Petite question: comment je calcule le nombre de bits?
 
merci!

n°76126
BIGBEN2
Posté le 27-11-2001 à 21:41:29  profilanswer
 

La solution pour calculer le nombre de bit est
 
de resoudre l'equation:
2^X=VM(valeur max de ton nombre)
 
X=e^(LN(VM)/LN(2))
 
e^(x): espotentiel de X
Ln(x):Logarythme neperien de X.


---------------
http://www.programmation-fr.com
n°76146
mario51
Posté le 27-11-2001 à 22:02:59  profilanswer
 

bigben2 a écrit a écrit :

La solution pour calculer le nombre de bit est
 
de resoudre l'equation:
2^X=VM(valeur max de ton nombre)
 
X=e^(LN(VM)/LN(2))
 
e^(x): espotentiel de X
Ln(x):Logarythme neperien de X.  




 
 
Merci beaucoup!
Je vais essaye ca.

n°76156
mario51
Posté le 27-11-2001 à 22:18:18  profilanswer
 

mario51 a écrit a écrit :

 
 
Petite question: comment je calcule le nombre de bits?
 
merci!  




 
Cette declaration ne plait pas a mon compilateur est j'ai donc pleins d'erreurs !!!!!
 
Comment faire?

n°76158
BIGBEN2
Posté le 27-11-2001 à 22:24:37  profilanswer
 

bah je sais pas peut etre trouve un autre compilateur... ;)


---------------
http://www.programmation-fr.com
n°76169
mario51
Posté le 27-11-2001 à 22:52:49  profilanswer
 

bigben2 a écrit a écrit :

bah je sais pas peut etre trouve un autre compilateur... ;)  




 
Tu es sur que c'est du C????

n°76187
gilou
Modérateur
Modzilla
Posté le 28-11-2001 à 00:59:59  profilanswer
 

KarLKoX a écrit a écrit :

Gilou>justement, mario code en C et a choisir, je préfere me plier a quelque chose de normaliser :)  




C'est bien ce que je voulais souligner: il faut preferrer long long.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°76196
mario51
Posté le 28-11-2001 à 08:42:36  profilanswer
 

gilou a écrit a écrit :

 
C'est bien ce que je voulais souligner: il faut preferrer long long.
A+,  




 
J'ai un probleme avec long long :
error C2632: 'long' followed by 'long' is illegal
 
Que faire....?

n°76198
BENB
100% Lux.
Posté le 28-11-2001 à 09:00:07  profilanswer
 

bigben2 a écrit a écrit :

La solution pour calculer le nombre de bit est
 
de resoudre l'equation:
2^X=VM(valeur max de ton nombre)
 
X=e^(LN(VM)/LN(2))
 
e^(x): espotentiel de X
Ln(x):Logarythme neperien de X.  
 




X = log2(VM) plutot...
log2 etant le log base 2...
log2(x)=log(x)/log(2) avec log un log (nepeerien, decimal ou autre...)
 
Il convient bien sur d'arrondir le resultat a la valeur superieure...
 
pour ce qui est de  
 

Citation :

unsigned int NB:X  
 
NB: le nom de ta variable.  
X: Le nombre de bit ki vont etre utiliser en memoir pour stocker ton entier....


 
je doute de la legalite...
en effet cette syntaxe s'utilise dans un structure pour utiliser independament les differents bits d'un entier, or la il ne s'agit pas de decouper un entier mais bien d'en concatener plusieurs...

 

[edtdd]--Message édité par BENB--[/edtdd]

n°76241
Carbon_14
Posté le 28-11-2001 à 11:26:37  profilanswer
 

Si les chiffres sont dans une chaîne de caractères ("illimitée" ), voir http://www.google.fr/search?hl=fr&q=huge+integer&meta= si y a outils (dont http://www.cs.msstate.edu/~cs4153/ [...] erver.html pour les additionner). On doit bien pouvoir trouver les autres opérations si besoin (le titre dit STOCKAGE, pas manipulation).

n°76532
gilou
Modérateur
Modzilla
Posté le 28-11-2001 à 23:43:06  profilanswer
 

mario51 a écrit a écrit :

 
 
J'ai un probleme avec long long :
error C2632: 'long' followed by 'long' is illegal
 
Que faire....?  




Utiliser un compilo qui implemente la norme C99.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°76552
nur
Posté le 29-11-2001 à 08:18:08  profilanswer
 

Regarde ici ça pourra peut etre t'aider:
le topic :"Comment passer d'un chaine de chiffes a une chaine de bit".
 
 
http://forum.hardware.fr/forum2.ph [...] topic=&p=2

n°77877
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 04-12-2001 à 09:52:20  profilanswer
 

(je vais passer pour un fou là:D)
 
La solution est toute conne, il suffit de passer par un pointeur d'entier...

 

[edtdd]--Message édité par fodger--[/edtdd]


---------------
Just drink it!
n°77880
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-12-2001 à 09:54:24  profilanswer
 

:heink: tu pourrais expliquer là ?

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°77915
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 04-12-2001 à 10:32:40  profilanswer
 

bein disons qu'avec un unsigned long tu vas de 0 à 4.294.967.295... ce qui est déjà énorme.
 
Si vraiment ça dépasse, il n'a pas d'autres choix (enfin je vois pas autrement:D) que de passer par un pointeur d'entier...
 
genre int *chiffre;
chiffre=(int *)malloc(size of(int));
 
vous en pensez quoi?
 
Il y a aussi des long double qui sont des flottants sur 80 bits...


---------------
Just drink it!
n°77923
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-12-2001 à 10:52:53  profilanswer
 

ok unsigned long int, mais bon ça résout pas le problème, t'as que 9-10 chiffres et il en veut 20-25.
long double, mwouais la précision est pas tj terrible...
et puis ça ne fait "que" 1208925819614629174706176 donc on est tout juste à 24-25 chiffres
quand on a ton histoire de int* je vois pas en quoi l'allocation dynamique change quelque chose à la taille du int :??:

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°77987
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 04-12-2001 à 11:53:01  profilanswer
 

antp a écrit a écrit :

ok unsigned long int, mais bon ça résout pas le problème, t'as que 9-10 chiffres et il en veut 20-25.
long double, mwouais la précision est pas tj terrible...
et puis ça ne fait "que" 1208925819614629174706176 donc on est tout juste à 24-25 chiffres
quand on a ton histoire de int* je vois pas en quoi l'allocation dynamique change quelque chose à la taille du int :??:  
 
 




 
rien sur la taille de l'élément lui même... mais c'est la solution, stocker le nombre en plusieurs parties...


---------------
Just drink it!
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [c] Comment stocker un TRES TRES gros entiers?

 

Sujets relatifs
[c] format d' entiers ?uen tite kestion mais alors vraiment tres tres conne :p
[Gros newbie en C] Pkoi ca clignote en mode 13h?Pour un GROS NUL EN PHP
Gros nioubi en PHP ki pose des questions ...(Qu'est ce qu'il fout là?)[SQL] Comment faire une recherche sur seulement des mots entiers ?
[OT] Gros bleme avec permissions de fichiers via FTP[PHP] Problème de _gros_ newbie
[ HTML ] SVP , j'ai un gros problème avec un tableau :(((((implémentation de grands entiers en SML
Plus de sujets relatifs à : [c] Comment stocker un TRES TRES gros entiers?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR