2017-05-13 4 views
1

Je travaille sur une classe de nombre rationnel en C++. Le nombre rationnel est défini par deux int (numérateur et dénominateur). Je voudrais l'afficher correctement comme numéro de chiffre. pour l'instant, je détermine si le nombre est un nombre «illimité» ou un nombre rationnel de nombre limité.Affichage illimited nombre rationnel défini par deux entier

Voici un petit code pseudo pour illustrer:

define print_rational(num, denom): 
    if(isUnlimited(num, denom): 
     ? 
    else: 
     //"limited" rational, no problem for them 

Je voudrais afficher des chiffres comme ceci illimitées: imprimer une fois les chiffres de repetitives, puis « ... » (Exemple: 1/3 - > 0,3 ..., 1/11 -> 0,09 ...)

Alors, est-il un algorithme pour trouver le bloc de chiffres qui sera répéter dans un nombre rationnel?

+1

longue division travaille par une série de divisions avec quotient et le reste. Lorsque le même reste apparaît une seconde fois (comme il doit le faire par le principe du trou de pigeon puisqu'il est compris entre 0 et denom - 1 inclus), le processus se répète et le même bloc se répète. Ainsi, il s'agit essentiellement d'un problème de détection de cycle. –

+1

Je trouve la même réponse à la question. https://softwareengineering.stackexchange.com/questions/192070/what-is-a-efficient-way-to-find-repeating-decimal –

+0

Par « numéro de chiffres » voulez-vous dire un numéro affiché avec des chiffres décimaux? Vous voulez dire par "illimité" et "limité" ici? Voulez-vous dire avec finiment ou infiniment beaucoup de décimales - c.-à-d. se terminant contre répéter? –

Répondre