suma de fracciones en c++

r1
11 de Mayo del 2006
hola necesito sumar fracciones en c++ como maximo 5 fracciones para esto se le debe sacar el minimo comun multiplo y despues de sumar hay que simplificar por fa necesito el codigo de todo eso
gracias salu2.

Almu
11 de Mayo del 2006
//Lee dos fracciones y realiza operaciones con ellas

#include <stdio.h>

void leerFraccion(int *,int *);
void sumar(int,int,int,int,int *, int *);
void restar(int,int,int,int, int *, int *);
void multiplicar(int,int,int,int, int *, int *);
void dividir(int,int,int,int,int *, int *);
void simplificarFraccion(int *,int *);

int main()
{
int n1,d1,n2,d2,n3,d3;
int opcion;
float resultado;

puts("Primera fraccion...");
leerFraccion(&n1,&d1);
puts("Segunda fraccion...");
leerFraccion(&n2,&d2);

do{
puts("Elija una opcion:");
puts("1. sumar");
puts("2. restar");
puts("3. multiplicar");
puts("4. dividir");
scanf("%d",&opcion);
switch(opcion)
{
case 1:
sumar(n1,d1,n2,d2,&n3,&d3);
simplificarFraccion(&n3,&d3);
printf(" (%d/%d)+(%d/%d)=(%d/%d) ", n1,d1,n2,d2,n3,d3);
break;
case 2:
restar(n1,d1,n2,d2,&n3,&d3);
simplificarFraccion(&n3,&d3);
printf(" (%d/%d)-(%d/%d)=(%d/%d) ", n1,d1,n2,d2,n3,d3);
break;
case 3:
multiplicar(n1,d1,n2,d2,&n3,&d3);
simplificarFraccion(&n3,&d3);
printf(" (%d/%d)*(%d/%d)=(%d/%d) ", n1,d1,n2,d2,n3,d3);
break;
case 4:
dividir(n1,d1,n2,d2,&n3,&d3);
simplificarFraccion(&n3,&d3);
printf(" (%d/%d)/(%d/%d)=(%d/%d) ", n1,d1,n2,d2,n3,d3);
break;
default:
puts("opcion incorrecta");
}
}while((opcion < 1) || (opcion > 4));

return 1;

}

void leerFraccion(int *n, int *d)
{
puts("Introduzca el numerador");
scanf("%d",n);
puts("Introduzca el denominador");
scanf("%d",d);
}

void sumar(int n1, int d1, int n2, int d2, int *n3, int *d3)
{
if(d1 == d2)
{
*n3 = n1+n2;
*d3 = d1;
}
else
{
*d3 = d1 * d2;
*n3 = (n1*d2)+(n2*d1);
}
}

void restar(int n1, int d1, int n2, int d2, int *n3, int *d3)
{
if(d1 == d2)
{
*n3 = n1-n2;
*d3 = d1;
}
else
{
*d3 = d1*d2;
*n3 = (n1*d2)-(n2*d1);
}
}

void multiplicar(int n1, int d1, int n2, int d2, int *n3, int *d3)
{
*n3 = n1*n2;
*d3 = d1*d2;
}

void dividir(int n1, int d1, int n2, int d2,int *n3, int *d3)
{
*n3 = n1*d2;
*d3 = d1*n2;
}

void simplificarFraccion(int *n3, int *d3){
int i;
if(*n3 <= *d3)
{
for(i = 1; i<= (*n3/2); i++){
if((*n3%i == 0) && (*d3%i == 0))
{
*n3 /= i;
*d3 /= i;
}
}
}
else
{
for(i = 1; i<= (*d3/2); i++){
if((*n3%i == 0) && (*d3%i == 0))
{
*n3 /= i;
*d3 /= i;
}
}
}

}


espero que te sirva de algo. Salu2.