Menú principal

lunes, 7 de septiembre de 2020

Multiplicación de fracciones. Introducción a sobrecarga de operadores - C++

Se procede a realizar un programa que realice la multiplicación de dos fracciones. En primer lugar se solicitarán las fracciones al usuario y para ello, se han creado dos funciones dentro de la clase Fraccion, SetN y SetD. Posteriormente se realiza la multiplicación de estas mediante una función friend declarada en la misma clase. Para realizar dicha operación se necesita acceder al numerador de cada fraccion de forma independiente al denominador, por lo que necesitaremos las funciones GetN y GetD. Finalmente, en el main se declara la variable fMulti como Fraccion y se llama a la función multiplicación. Se mostrará el resultado por pantalla.

En las siguiente entradas de este blog veremos como simplificar este programa utilizando la sobrecarga de operadores.

 1 #include <iostream>
 2  using namespace std;
 3  
 4  class Fraccion
 5  {
 6      int n,d;
 7  
 8  public:
 9      Fraccion(int num=0, int den=1)
10      {
11          n=num;
12          d=den;
13      }
14      //Set para introducir los datos de las fracciones
15      void SetN(int num)
16      {
17          n=num;
18      }
19      void SetD(int den)
20      {
21          d=den;
22      }
23      //Para diferenciar el num y den de cualquier fracion y sacarlo por pantalla
24      int GetN()
25      {
26          return n;
27      }
28  
29      int GetD()
30      {
31          return d;
32      }
33      //Friend para que la funcion pueda acceder a la clase
34      friend Fraccion multiplica(const Fraccion &f1, const Fraccion &f2);
35  };
36  
37  Fraccion multiplica(const Fraccion &f1, const Fraccion &f2)
38  {
39      Fraccion result;
40      result.n=f1.n*f2.n;
41      result.d=f1.d*f2.d;
42      return result;
43  }
44  int main()
45  {
46      Fraccion f1, f2, fMulti;
47      int n1,n2,d1,d2;
48  
49      cout << "Intro primer numerador: "; cin >>n1;
50      cout << "Intro primer denominador: "; cin >>d1;
51      cout << endl << "Intro segundo numerador: "; cin >>n2;
52      cout << "Intro segundo denominador: "; cin >>d2;
53  
54      f1.SetN(n1);
55      f1.SetD(d1);
56      f2.SetN(n2);
57      f2.SetD(d2);
58  
59      fMulti=multiplica(f1,f2);
60  
61      cout<<endl<<"La multiplicacion es: "<<fMulti.GetN()<<" / "<<fMulti.GetD()<<endl;
62  }

No hay comentarios:

Publicar un comentario