Conversion en fraction égyptienne

Description

Après l'envoi récent de lptm974 sur le même sujet, j'ai eu l'envie de faire un programme concurrent qui se base une méthode différente laquelle est présentée à : http://fr.wikipedia.org/wiki/Fraction_égyptienne
Merci à lptm974. pgl10.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>
#define MAXTAB 100
int main (){
unsigned int maxint=4294967295;
unsigned int num,den,tab[MAXTAB+1],i,j,k;
int nt,kt,t;
printf("\n Num\x82rateur   : ");
scanf("%d",&num);
if(!(num>0)) {printf("\n Il faut un num\x82rateur positif !\n\n"); system("pause"); return(1);}
printf("\n D\x82nominateur : ");
scanf("%d",&den);
if(!(den>0)) {printf("\n Il faut un d\x82nominateur positif !\n\n"); system("pause"); return(1);}
kt=0; nt=0;
k=num/den;
if(k>0) {tab[0]=k;kt=1;nt=1;}  // si il y a une
i=(num-k*den);                 // partie entière
j=den;
if(i>0) while(0==0) {          // traitement de i/j
    if((i*(j/i))==j) {j=j/i; tab[nt]=j; nt=nt+1; break;} // quand i divise j c'est fini ...
    k=1+j/i;
    tab[nt]=k; nt=nt+1;
    if(nt>MAXTAB) {printf("\n Tableau trop petit !\n\n"); system("pause"); return(1);}
    i=i*k-j;
    if(j<maxint/k) j=j*k;
    else  {printf("\n D\x82passement de capacit\x82 !\n\n"); system("pause"); return(1);}
    }
printf("\n %d/%d en fraction \x82gyptienne peut s'\202crire : \n\n %d/%d = ",num,den,num,den);
if(kt==1) printf("%d ",tab[0]);
else printf("1/%d ",tab[0]);
for(t=1;t<nt;t++) printf("+ 1/%d ",tab[t]);
printf("\n\n"); 
system("pause");
return(0);
}

Conclusion :


Toute remarque ou correction sera bienvenue.

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.