programa en C++ que multiplique dos fracciones
Respuestas a la pregunta
Respuesta:
Explicación:Materia: Lenguajes de Programación
Hola compañeros en esta entrada voy a explicarles un código que recuerdo lo hicimos en alguna clase de la materia Taller de Programación, en este código en C utilizo typedef struct, se trata de un programa que suma, resta, multiplica y divide fracciones.
Lo voy a ir explicando bloque por bloque luego ya lo junto todo.
Primero que nada incluyo la librería estándar y defino la estructura de el tipo de dato que se llama FRAC y a su vez contiene dos variables de tipo short que se ve algo así:
#include<stdio.h>
typedef struct {
short numerador;
short denominador;
}FRAC;
después defino una función setvalue que va a regresar un dato tipo FRAC y va a entrar en ella dos variables llamadas a y b que corresponden al numerador y al denominador, esta función sirve para saber si la fracción con la que quiero trabajar es correcta, porque si llegara tener un 0 en el denominador pues no se puede acer ninguna suma, resta multiplicación o division con ella, para esto dentro la función tengo un if que me ayuda a identificar el denominador y si el denominador no es 0 pues devuelve la variable tipo FRAC correctamente pero si es 0 manda un mensaje de error y regresa un valor equivocado.
FRAC setvalue(int a, int b){
FRAC ar;
if(b!=0){
ar.denominador=b;
ar.numerador=a;
return(ar);
}
printf("Entonces el valor no existe");
ar.numerador=-1;
ar.denominador=1;
return(ar);
}
Ahora esta función que aunque es muy pequeña es de gran utilidad para poder mostrar las fracciones de esta forma numero1/numero2, recibe una variable tipo FRAC llamada ar, de ar obtiene el numerador(ar.numerador) y el denominador(ar.denominador) y los coloca de la forma ar.numerador/ar.denominador, la función no regresa nada porque lo único que hace es dar formato a la impresión.
void toprint (FRAC ar){
printf("%d/%d", ar.numerador, ar.denominador);
return;
}
Y ahora viene la parte matemática
Defino la función mult que va a recibir dos tipo FRAC de entrada que son a y b y va a regresar otro tipo FRAC al que llamé ar. Para obtener la multiplicación de una fracción se tiene que multiplicar el numerador1 por el numerador2 y el denominador1 por el denominador2, bueno en código es igualito, tengo que entra FRAC a, en dónde obviamente a tiene su denominador(a.denominador) y su numerador(a.numerador), lo mismo pasa con b(b.numerador y b.denominador), entonces hay que obtener el valor de FRAC ar, es decir el valor de ar.numerador y ar.denominador, para esto se multiplica a.numerador*b.numerador y esto es igual a ar.numerador, y a.denominadorr*b.denominador y esto es igual a ar.denominador, se ve largo pero esto es en realidad muy simple, este es el código:
FRAC mult(FRAC a, FRAC b){
FRAC ar;
ar.numerador=a.numerador*b.numerador;
ar.denominador=a.denominador*b.denominador;
return(ar);
}