jueves, 8 de agosto de 2013

Fracción propia y decimal


Este programa convierte una fracción propia - aquella cuyo numerador es menor que el denominador - en una fracción decimal. El sistema no es directo, dividiendo un número por otro como números reales. Ahí está la gracia, sino que se tratan los dos números en todo momento como números enteros. En realidad es lo mismo que haríamos con lápiz y papel y un poco de paciencia, porque saca 20 decimales.

#include<iostream>
#define N 20
using namespace std;
int main()
{
long int dv,ds,q=1,Q,R;
int i,d[N];
for(i=0;i<N;i++) d[i]=0;
cout<<"\tVamos a transformar una fracción propia,\n"
<<"\ten la que el numerador es menor que el denominador,\n"
<<"\ten una decimal\n";
ini:
cout<<"Dame el numerador N de la fracción: ";
cin>>dv;
cout<<"Dame en denominador D de la fracción: ";
cin>>ds;
if(dv>=ds) {cout<<"¡Error, repita, por favor!\n";goto ini;}
//----
while(q*ds<=dv)
q++;
Q=q-1;
R=dv;
for(i=0;i<N;i++){
if(R==0) break; 
else {
dv=R*10;q=1;
while(q*ds<=dv)
q++;Q=q-1;
R=dv-Q*ds;
d[i]=Q;
}
}
cout<<"La fracción decimal es: 0,";
for(i=0;i<N;i++) cout<<d[i];
cout<<endl;
return 0;
}

No hay comentarios:

Publicar un comentario