El problema es bonito. Sucede que no se puede plantear como tú haces, ya que la función redondeo solo te puede dar -- el redondeo a la parte entera.
Te acuerdas cuando aprendiste a dividir con papel y lápiz a mano? Pues se trata de hacer lo mismo pero más rápido por computador.
Los números racionales, desde tiempos de la Grecia clásica, se conciben como "razón" entre dos números enteros (p y q ). Como los griegos no conocían el 0, cosa que lastró el desarrollo de matemáticas en Occidente, esta definición no plantea problemas.
Pero nosotros, desde tiempos de los arabes que los trajeron de la India (la de verdad, no la que creyó encontrar Colón en Santo Domingo

, saludos a los hermanos de Santo Domingo) , debemos completar esta definición exigiendo "q > 0"
Atendiendo a su representación decimal, se pueden dividir en dos
- enteros, los que no tienen parte decimal propiamente
- decimales, los que tienen parte decimal, ya sea finita o infinita periódica
En nuestro caso, vamos a considerar los enteros como un caso especial de los decimales, con una serie infinita de decimales con el dígito 0. 3 ~ 3.00000000000000000000000000000000......
O sea que el "primer decimal" , será el orden de unidades, el segundo de las décimas, el tercero de las centésimas...
#include <stdio.h>
/* Formal Spec
P : N >= 0 , p>=0 , q > 0
Q :
rat(p/q) - (p/q + \sum i : 1 <= i <= N : pow(10,-i)*((r_{i-1}*10)/q)
<= pow(10,-N)
where r_{0} = p%q ;
r_{n+1} = r_{n}*10 % q
Informally, any rational number can be expressed with arbitrary precission
just by operating its sucessive remainders.
*/
void exprDecUpToN(const int p, const int q,
int V[], const int N)
{
int n,r;
for(n=1, V[0]=(p/q), r=(p%q);n<N;n++)
{
V[n] = (10*r)/q;
r = (10*r)%q;
}
return;
}
#define MAX 10000
int main(int argc, char **args)
{
int N,p, q, V[MAX];
for (; scanf("%d %d %d",&N
,&p
,&q
)==3 ; ) {
exprDecUpToN(p,q,V,N+1);
int n;
for (n
=1; n
<N
+1; n
++) printf("%d",V
[n
]); }
return 0;
}
Y ahora unos ejemplos de ejecución. El protocolo de entrada exige primerto meter el número de decimales deseado, el primer entero y el segundo (recuerda que debe ser mayor qie 0).
Llama la atención el último que es decimal infinito periódico.
1 1 2
0.5
2 1 2
0.50
4 56 8
7.0000
18 1 3
0.333333333333333333
2 3 4
0.75
4 3 4
0.7500
40 56 8
7.0000000000000000000000000000000000000000
500 47 7
6.7142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857