C Program Fraction To Decimal

How to write a C Program Algorithm:
  1. Divide numerator by denominator until remainder = 0
  2. or it makes a loop (a remainder appears twice).
  3. Use array to mark position of a remainder.

  1. /**
  2. Algorithm:
  3.         Divide numerator by denominator until remainder = 0
  4.         or it makes a loop (a remainder appears twice).
  5.         Use array to mark position of a remainder
  6. */
  7. #include <cstdio>
  8.  
  9. int digits[100001];
  10. int pos[100001];
  11. //position of a remainder
  12.  
  13. int main() {
  14.         int numer, denom;
  15.         printf("Nhap tu so va mau so: ");
  16.         scanf("%d%d", &numer, &denom);
  17.  
  18.         printf("%d", numer / denom);
  19.         //Division
  20.         numer %= denom;
  21.         if (numer == 0) return 0;
  22.  
  23.         printf(".");
  24.  
  25.         int at;
  26.         for(at = 1; numer != 0; ++at) {
  27.                 if (pos[numer]) {
  28.                         //A remainder appeared before so it makes a loop
  29.                         for(int i = 1; i < pos[numer]; ++i) printf("%d", digits[i]);
  30.                         //Before loop
  31.  
  32.                         printf("(");
  33.                         //A loop goes here
  34.                         for(int i = pos[numer]; i < at; ++i) printf("%d", digits[i]);
  35.                         printf(")");
  36.                         break;
  37.                 }
  38.                 //remainder did not appear before
  39.                 pos[numer] = at;
  40.                 numer *= 10;
  41.                 digits[at] = numer / denom;
  42.                 numer %= denom;
  43.                 if (numer == 0) {
  44.                         //this fraction has no loop
  45.                         for(int i = 1; i <= at; ++i) printf("%d\n", digits[i]);
  46.                         break;
  47.                 }
  48.         }
  49.         return 0;
  50. }


Learn More :