begin process at 2012 05 29 03:12:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

division


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

division

dimanche 10 novembre 2002 à 09:51:41 | division

superoi

bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit par exemple) donc elle recoit une chaine de caractere et renvoie un chaine de caractere car ca ne tient pas dans un int

j'ai reussi a faire l'addition, la soustraction, la multiplication

et j'ai fait la division mais elle prend beaucoup de temps et surtout beaucoup trop de ram a cause des malloc

et en fait j'aimerais savoir si quelqu'un aurais une idee pour
pouvoir faire cette division rapidement

en fait moi ce que j'ai fait c'est fait c'est par exemple il y'a
10000 / 10

j'ai dit que le resultat etait egale a
la taille du premier chiffre(l1) - la taille du dexieme(l2) + 1 (meme ce n'est pas toujours vrai ca fait rien)

ensuite je fait 10 * 1000 (1000 pour ce que j'ai dit avant l1 - l2 + 1)
si il trouve un chiffre egale a 10000 c'est bon il l'affiche et si c'est plus grand il revient au chiffre d'avant et refais la meme chose en enlevent un 0 au chiffre

mais le prob c'est que si je fait 9999 / 1

ca fait 1 * 1000
1 * 2000
1 * 3000 .... jusqu'a 9000

ensuite 1 * 9100
1 * 9200 .....
en fait j'ai regler le probleme pour quand je divise par 1 il renvoi le premier chiffre directement mais c'est la meme chose quand je divise par 2 ca prend beaucoup de temps
la j'ai donner un petit chifre mais si je met 10000 9 dans mon chiffre ca ne marche plus car ca prend trop de ram et meme si ca marchai ca prendrai beaucoup trop de temps

voila en fait mon probleme si quelqu'un pouvais me donner une solution pour pouvoir faire ca beaucoup plus vite


dimanche 10 novembre 2002 à 12:33:21 | Re : division

GoldenEye





-------------------------------
Réponse au message : Je pense qu'il faut revenir à la division comme en CE2. Il faut aussi être utile de se souvenir que a/b = a*1/b d'où calcul de l'inverse.
-------------------------------

bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit par exemple) donc elle recoit une chaine de caractere et renvoie un chaine de caractere car ca ne tient pas dans un int

j'ai reussi a faire l'addition, la soustraction, la multiplication

et j'ai fait la division mais elle prend beaucoup de temps et surtout beaucoup trop de ram a cause des malloc

et en fait j'aimerais savoir si quelqu'un aurais une idee pour
pouvoir faire cette division rapidement

en fait moi ce que j'ai fait c'est fait c'est par exemple il y'a
10000 / 10

j'ai dit que le resultat etait egale a
la taille du premier chiffre(l1) - la taille du dexieme(l2) + 1 (meme ce n'est pas toujours vrai ca fait rien)

ensuite je fait 10 * 1000 (1000 pour ce que j'ai dit avant l1 - l2 + 1)
si il trouve un chiffre egale a 10000 c'est bon il l'affiche et si c'est plus grand il revient au chiffre d'avant et refais la meme chose en enlevent un 0 au chiffre

mais le prob c'est que si je fait 9999 / 1

ca fait 1 * 1000
1 * 2000
1 * 3000 .... jusqu'a 9000

ensuite 1 * 9100
1 * 9200 .....
en fait j'ai regler le probleme pour quand je divise par 1 il renvoi le premier chiffre directement mais c'est la meme chose quand je divise par 2 ca prend beaucoup de temps
la j'ai donner un petit chifre mais si je met 10000 9 dans mon chiffre ca ne marche plus car ca prend trop de ram et meme si ca marchai ca prendrai beaucoup trop de temps

voila en fait mon probleme si quelqu'un pouvais me donner une solution pour pouvoir faire ca beaucoup plus vite



lundi 11 novembre 2002 à 09:25:06 | Re : division

superoi





-------------------------------
Réponse au message : ouais je croit que je vais essayer ca mais pour le a*1/b je croit pas que ca marcherais car on doit faire sans virgule donc 1/b = 0 et apres a*0 = 0
ouais je pense que ca doit etre la seul solution de faire comme au CE2 mais en fait ce que je ne savais pas faire dans cette methode c'est pour faire un truc multibase car la calculatrice doit etre multibase mais je vais essayer

merci pour ta reponse
-------------------------------





-------------------------------
Réponse au message : Je pense qu'il faut revenir à la division comme en CE2. Il faut aussi être utile de se souvenir que a/b = a*1/b d'où calcul de l'inverse.
-------------------------------

bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit par exemple) donc elle recoit une chaine de caractere et renvoie un chaine de caractere car ca ne tient pas dans un int

j'ai reussi a faire l'addition, la soustraction, la multiplication

et j'ai fait la division mais elle prend beaucoup de temps et surtout beaucoup trop de ram a cause des malloc

et en fait j'aimerais savoir si quelqu'un aurais une idee pour
pouvoir faire cette division rapidement

en fait moi ce que j'ai fait c'est fait c'est par exemple il y'a
10000 / 10

j'ai dit que le resultat etait egale a
la taille du premier chiffre(l1) - la taille du dexieme(l2) + 1 (meme ce n'est pas toujours vrai ca fait rien)

ensuite je fait 10 * 1000 (1000 pour ce que j'ai dit avant l1 - l2 + 1)
si il trouve un chiffre egale a 10000 c'est bon il l'affiche et si c'est plus grand il revient au chiffre d'avant et refais la meme chose en enlevent un 0 au chiffre

mais le prob c'est que si je fait 9999 / 1

ca fait 1 * 1000
1 * 2000
1 * 3000 .... jusqu'a 9000

ensuite 1 * 9100
1 * 9200 .....
en fait j'ai regler le probleme pour quand je divise par 1 il renvoi le premier chiffre directement mais c'est la meme chose quand je divise par 2 ca prend beaucoup de temps
la j'ai donner un petit chifre mais si je met 10000 9 dans mon chiffre ca ne marche plus car ca prend trop de ram et meme si ca marchai ca prendrai beaucoup trop de temps

voila en fait mon probleme si quelqu'un pouvais me donner une solution pour pouvoir faire ca beaucoup plus vite




lundi 11 novembre 2002 à 11:25:47 | Re : division

GoldenEye





-------------------------------
Réponse au message : Calcule en base 10 et convertis ensuite en base n à l'aide des algos de conversion : tu divises ton nombre en base 10 par n et tu prends la suite inverse des restes pour obtenir le nombre en base n
-------------------------------





-------------------------------
Réponse au message : ouais je croit que je vais essayer ca mais pour le a*1/b je croit pas que ca marcherais car on doit faire sans virgule donc 1/b = 0 et apres a*0 = 0
ouais je pense que ca doit etre la seul solution de faire comme au CE2 mais en fait ce que je ne savais pas faire dans cette methode c'est pour faire un truc multibase car la calculatrice doit etre multibase mais je vais essayer

merci pour ta reponse
-------------------------------





-------------------------------
Réponse au message : Je pense qu'il faut revenir à la division comme en CE2. Il faut aussi être utile de se souvenir que a/b = a*1/b d'où calcul de l'inverse.
-------------------------------

bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit par exemple) donc elle recoit une chaine de caractere et renvoie un chaine de caractere car ca ne tient pas dans un int

j'ai reussi a faire l'addition, la soustraction, la multiplication

et j'ai fait la division mais elle prend beaucoup de temps et surtout beaucoup trop de ram a cause des malloc

et en fait j'aimerais savoir si quelqu'un aurais une idee pour
pouvoir faire cette division rapidement

en fait moi ce que j'ai fait c'est fait c'est par exemple il y'a
10000 / 10

j'ai dit que le resultat etait egale a
la taille du premier chiffre(l1) - la taille du dexieme(l2) + 1 (meme ce n'est pas toujours vrai ca fait rien)

ensuite je fait 10 * 1000 (1000 pour ce que j'ai dit avant l1 - l2 + 1)
si il trouve un chiffre egale a 10000 c'est bon il l'affiche et si c'est plus grand il revient au chiffre d'avant et refais la meme chose en enlevent un 0 au chiffre

mais le prob c'est que si je fait 9999 / 1

ca fait 1 * 1000
1 * 2000
1 * 3000 .... jusqu'a 9000

ensuite 1 * 9100
1 * 9200 .....
en fait j'ai regler le probleme pour quand je divise par 1 il renvoi le premier chiffre directement mais c'est la meme chose quand je divise par 2 ca prend beaucoup de temps
la j'ai donner un petit chifre mais si je met 10000 9 dans mon chiffre ca ne marche plus car ca prend trop de ram et meme si ca marchai ca prendrai beaucoup trop de temps

voila en fait mon probleme si quelqu'un pouvais me donner une solution pour pouvoir faire ca beaucoup plus vite





lundi 11 novembre 2002 à 16:52:50 | Re : division

superoi





-------------------------------
Réponse au message : ouais c'est ce que je vais faire merci pour ton aide
-------------------------------





-------------------------------
Réponse au message : Calcule en base 10 et convertis ensuite en base n à l'aide des algos de conversion : tu divises ton nombre en base 10 par n et tu prends la suite inverse des restes pour obtenir le nombre en base n
-------------------------------





-------------------------------
Réponse au message : ouais je croit que je vais essayer ca mais pour le a*1/b je croit pas que ca marcherais car on doit faire sans virgule donc 1/b = 0 et apres a*0 = 0
ouais je pense que ca doit etre la seul solution de faire comme au CE2 mais en fait ce que je ne savais pas faire dans cette methode c'est pour faire un truc multibase car la calculatrice doit etre multibase mais je vais essayer

merci pour ta reponse
-------------------------------





-------------------------------
Réponse au message : Je pense qu'il faut revenir à la division comme en CE2. Il faut aussi être utile de se souvenir que a/b = a*1/b d'où calcul de l'inverse.
-------------------------------

bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit par exemple) donc elle recoit une chaine de caractere et renvoie un chaine de caractere car ca ne tient pas dans un int

j'ai reussi a faire l'addition, la soustraction, la multiplication

et j'ai fait la division mais elle prend beaucoup de temps et surtout beaucoup trop de ram a cause des malloc

et en fait j'aimerais savoir si quelqu'un aurais une idee pour
pouvoir faire cette division rapidement

en fait moi ce que j'ai fait c'est fait c'est par exemple il y'a
10000 / 10

j'ai dit que le resultat etait egale a
la taille du premier chiffre(l1) - la taille du dexieme(l2) + 1 (meme ce n'est pas toujours vrai ca fait rien)

ensuite je fait 10 * 1000 (1000 pour ce que j'ai dit avant l1 - l2 + 1)
si il trouve un chiffre egale a 10000 c'est bon il l'affiche et si c'est plus grand il revient au chiffre d'avant et refais la meme chose en enlevent un 0 au chiffre

mais le prob c'est que si je fait 9999 / 1

ca fait 1 * 1000
1 * 2000
1 * 3000 .... jusqu'a 9000

ensuite 1 * 9100
1 * 9200 .....
en fait j'ai regler le probleme pour quand je divise par 1 il renvoi le premier chiffre directement mais c'est la meme chose quand je divise par 2 ca prend beaucoup de temps
la j'ai donner un petit chifre mais si je met 10000 9 dans mon chiffre ca ne marche plus car ca prend trop de ram et meme si ca marchai ca prendrai beaucoup trop de temps

voila en fait mon probleme si quelqu'un pouvais me donner une solution pour pouvoir faire ca beaucoup plus vite






vendredi 20 août 2004 à 18:49:14 | Un algorithme "rapide"

rambc

Essaye l'algorithme suivant :
' On cherche k tel que 2^(k-1)×b <= a < 2^k×b ,
' et on enregistre au passage les 2^i×b .

' On a k tel que 2^(k-1)×b <= a < 2^k×b .


' On redescend de proche en proche.
' a =2B×Q + R donne :
' Cas 1: R < B alors q=2Q et r=R
' Cas 2: R = B alors q=2Q + 1 et r=R - 2B/2
' Cas 3: R > B alors q=2Q + 1 et r=R - 2B/2

' Pour redescendre, on commence avec
' B=2^(k-1)×b et donc forcément R=0.
' Ceci initialise la boucle.

C'est plus rapide que la méthode apprise à l'école primaire.

N'hésites pas en si tu souhaites avoir des précisions, ou bien pour avoir une version VBA.





Cette discussion est classée dans : chiffre, temps, division, trop, prend


Répondre à ce message

Sujets en rapport avec ce message

Valeur entiere [ par lechabin ] Bonjour, j'ai un soucis qui me turlupine et je n'arrive pas à le résoudre...j'aimerai récupérer la valeur entiere d'un float. Le cast ne suffit pas pa Comment savoir le temps que prend un instruction? [ par Samoul ] Je voudrait savoir comment calculer a l'aide d'un chronomètre ou de nimporte quel autres manière le temps qye peut prendre un instruction.Ex:Timer sta ReceiveFrom (Temps Trop long) [ par ordy ] Bonjour a Tous.J'aimerais savoir si quelqu'un connais une librarie comme receivefrom.Parce que j'aurais besoin de definir un temps d'environ 10 à 60 m algo division [ par jc_amacher ] La division est une opération très longue et je suis à la recherche d'un algorithme qui permettrait de l'accélérer dans le cadre d'un développement su Déplacer un dossier et son contenu [ par bebel6 ] Bonjour,je cherche à déplacer un dossier et son contenu par l'intermédiaire d'un simple click en utilisant la fonction MoveFile ( old, new );Mion prob Ouvrir des images avec Qt [ par zionzion ] Salut tout le monde,Je découvre Qt et je cheche un moyen simple d'ouvrir des images : en commençant d'abord par des .bmp puis en finissant par des .jp Aidez moi !!!!!! [ par splydee ] Bon j'ai juste une question,sur kel site on peux apprendre le language c++ ?????Après avoir apris le language c++ comment crée un programme ????Help a division modulo [ par AngeloVivaldi ] bjr a tous.Voila, je fai en C++ cette operation :c = x % y;vous l'aurez compris c'est une division modulo.Maintenan, sachant ke g y et c, commen trou voir les paquets IP [ par alain34270 ] Bonjour à tous,Comme j'ai un petit réseau de 3 postes, pour moi et mes enfants, j'ai partagé ma connexion adsl pour qu'ils puissent consulter le net. tout petit probleme tres simple ! [ par Kevb37 ] Hello,Bon, alors je commence le C depuis peu et je voudrais savoir comment enregistrer un chiffre dans un fichier sur le disque (par exemple avec fget


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales