Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda Urgente

Estas en el tema de Ayuda Urgente en el foro de C/C++ en Foros del Web. Buenas estoy creando un algoritmo que simplifique fracciones, el programa hace uso del maximo comun divisor el cual me arroja el divisor de la fracción, ...
  #1 (permalink)  
Antiguo 21/10/2009, 20:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Ayuda Urgente

Buenas
estoy creando un algoritmo que simplifique fracciones, el programa hace uso del maximo comun divisor el cual me arroja el divisor de la fracción, y por ende me calcula la fracción. El problema es que el solo me muestra la fracción y la fracción simplificada, pero necesito que me muestre la reduccion paso por paso. Les agradeceria su ayuda, aqui les dejo el codigo para que me digan que le tengo que agregar o modificar, gracias

Código PHP:
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace::std;

int MCD(int a,int b)
int r=a%b;
  while(
r>0)
  { 
a=b;
    
b=r;
    
r=a%b;
  }
  
  return 
b;
}

void Simplificar_Fraccion(int num,int den)
int dividir=MCD(num,den),c,d;
  
num/=dividir;
  
den/=dividir;
  
 
cout<<num<<"/"<<den;
}

int main()
{
int a,b;
 
cout<<"Digite el numerador de la fraccion: ";
 
cin>>a;
 
cout<<"Digite el denominador de la fraccion: ";
 
cin>>b;
 
cout<<a<<"/"<<b<<" = ";
 
Simplificar_Fraccion(a,b);
 
_getch();

  #2 (permalink)  
Antiguo 21/10/2009, 22:09
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
De acuerdo Respuesta: Ayuda Urgente

Esta es la manera que te propongo para que lo hagas:

Código c++:
Ver original
  1. #include<iostream.h>
  2. #include<conio.h>
  3.  
  4.  
  5. int divisibles(int a,int b)
  6. {
  7.   int retorno=0,da=0,db=0,inia=2,inib=2,bandera=1;
  8.   while(bandera)
  9.   {
  10.     for(int i=inia;i<=a;i++)
  11.     {
  12.       if(a%i==0)
  13.       {
  14.     da=i;
  15.     i=a+1;
  16.       }
  17.     }
  18.  
  19.     for(i=inib;i<=b;i++)
  20.     {
  21.       if(b%i==0)
  22.       {
  23.     db=i;
  24.     i=b+1;
  25.       }
  26.     }
  27.  
  28.     if(da==db)
  29.     {
  30.       retorno=da;
  31.       bandera=0;
  32.     }
  33.     else
  34.     {
  35.       if(da<db&&db<a)
  36.        inia=db;
  37.       else
  38.       {
  39.     if(db<da&&da<b)
  40.      inib=da;
  41.     else
  42.      bandera=0;
  43.       }
  44.     }
  45.   }
  46.   return retorno;
  47. }
  48. void main()
  49. {
  50.   int num,den;
  51.   int valor=0,cont=1;
  52.  
  53.   cout << "NUMERADOR: "; cin >> num;
  54.   cout << "DENOMINADOR: "; cin >> den;
  55.   valor=divisibles(num,den);
  56.  
  57.   if(valor!=0)
  58.   {
  59.     do
  60.     {
  61.       if(valor!=0)
  62.       {
  63.     num=num/valor;
  64.     den=den/valor;
  65.       }
  66.       if(den==1)
  67.        cout << "\nSimplificación No. " << cont << " Divisor " << valor << ": " << num << endl;
  68.       else
  69.        cout << "\nSimplificación No. " << cont << " Divisor " << valor << ": " << num << "/" << den << endl;
  70.       cont++;
  71.       valor=divisibles(num,den);
  72.     }while(valor!=0);
  73.   }
  74.   else
  75.    cout << "\nFracción No Reducible: " << num << "/" << den << endl;
  76.   getch();
  77. }

Solo tienes que acomodarlo para que funcione con tu compilador. Espero sea lo que buscas.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #3 (permalink)  
Antiguo 23/10/2009, 14:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ayuda Urgente

Muchas Gracias!

Lo unico es que me quedo el algoritmo como una función y yo queria una subrutina pero grax =
:)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:05.