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

  FORUM HardWare.fr
  Programmation
  Algo

  [plutot C++]reduire une fraction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[plutot C++]reduire une fraction

n°823912
lunarnet76
Posté le 16-08-2004 à 02:13:56  profilanswer
 

:pt1cable: Salut a tous! :bounce:  
J'ai un enorme probleme... j'ai fait par moi-meme plusieurs algorithmes de reduction de fraction mais... g toujours des problemes pour les grands nombre (genre 1054479878/154564561) alors quelqu'un aurait il un algorithme a me proposé?
parce que j'ai beau cherché ils sont tous assez "gourmand"!
Merci!!!
 :bounce:  

mood
Publicité
Posté le 16-08-2004 à 02:13:56  profilanswer
 

n°823917
lunarnet76
Posté le 16-08-2004 à 02:46:32  profilanswer
 

héhé je sens que je vais me faire lynché car je vais répondre a ma question ... g retrouvé un vieux fichier avec un algorithme parfait ou quasiment :

Code :
  1. void reduirefraction(int& num,int& den){
  2. if (num==0||den==0){
  3.  num=0;
  4.  den=1;
  5.  return;
  6. }
  7. if (den<0){
  8. den*=-1;
  9. num*=-1;
  10. }
  11. if (den==1)return;
  12. int sgn=(num<0?-1:1);
  13. int g=pgcd(sgn*num,den);
  14. num/=g;
  15. den/=g;
  16. }


mais en fait j'ai un probleme pour avoir l'algorithme du plus grand commun denominateur!!!


Message édité par lunarnet76 le 16-08-2004 à 03:07:10
n°823920
dividee
Posté le 16-08-2004 à 04:51:06  profilanswer
 

L'algo d'Euclide:

Code :
  1. int pgcd(int i, int j)
  2. {
  3.     if (i<j) swap(i,j);
  4.     if (j == 0) return i;
  5.     return pgcd(j, i%j);
  6. }


Tu peux facilement le transformer en itératif si tu veux; je l'ai mis en récursif car c'est plus court à écrire...
 
Edit: grrr.. Comment on fait pour indenter proprement dans ce forum ?


Message édité par dividee le 16-08-2004 à 04:53:09
n°824008
Ace17
Posté le 16-08-2004 à 10:47:01  profilanswer
 

Version plus compacte :

Code :
  1. int pgcd(int i, int j)
  2. {
  3. if(j == 0)
  4.   return i;
  5. else
  6.   return pgcd(j, i%j);
  7. }


Message édité par Ace17 le 16-08-2004 à 10:47:21
n°824215
dividee
Posté le 16-08-2004 à 14:14:03  profilanswer
 

Oui mais tu introduis la précondition i>=j, ce qui ne fait que repousser une partie du code vers le client...

n°824229
Ace17
Posté le 16-08-2004 à 14:32:36  profilanswer
 

dividee a écrit :

Oui mais tu introduis la précondition i>=j, ce qui ne fait que repousser une partie du code vers le client...


Non, faux. Evidemment que ca marche meme si j est supérieur a i!


Message édité par Ace17 le 16-08-2004 à 14:32:49
n°824304
dividee
Posté le 16-08-2004 à 16:02:02  profilanswer
 

Tu as raison :jap: . Si j>i, i%j == i et le premier appel récursif se charge de faire l'échange... J'aurais du le voir :sweat:

n°825600
lunarnet76
Posté le 18-08-2004 à 02:43:47  profilanswer
 

merci !!!
j'avais  

Code :
  1. int pgcd(int a,int b){
  2. int c;
  3. while (b != 0){ 
  4.        c = a%b;
  5.        a = b;
  6.        b = c;     
  7.     }
  8. return abs(a);
  9. }


n°825602
lunarnet76
Posté le 18-08-2004 à 02:57:32  profilanswer
 

euh en fait j pense que mon algo est meilleur parce qu'il n'y a pas de récurrence...  
vous pensez pas?

n°825603
lunarnet76
Posté le 18-08-2004 à 03:21:41  profilanswer
 

dividee a écrit :

L'algo d'Euclide:
Tu peux facilement le transformer en itératif si tu veux;

:pt1cable:  :bounce:  j'avais pas comprit ce que ca voulait dire, lol, g vu un mot compliqué alors j'ai pas cherché!!!


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

  [plutot C++]reduire une fraction

 

Sujets relatifs
[Oracle 8.1.7] : réduire la taille d'un datafile[VB Excel] Comment inhiber les boutons "fermer","reduire"...
comment reduire un programme dans la systray?Filemaker : script pour reduire une image
comment réduire la taille d'un datafile RBS ?fonction de simplification de fraction ??
reduire taille de fichier wordVos trucs pour réduire la taille de votre executable
Comment reduire l'espace entre...Comment réduire ce bout de code ?
Plus de sujets relatifs à : [plutot C++]reduire une fraction


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)