Logo elrincondelc.com
curso de programación en c
Foros de programación en C
Inicio :: Código fuente

Valoración
0

quebrados

codigo enviada por: anifel
calculadora quebrados
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

void leerque(int &num,int &den);
int mcd(int a, int b);
void reducirque(int &num, int &den);
void sumarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2);
void restarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2);
void multiplicarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2);
void dividirque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2);
void escribirque(int num,int desn);

int main()
{
    /* Declaración de variables */
    
    int seleccion;
    int num1,den1;
    int num2,den2;
    int dens,nums;
    
    /* Entrada de datos */
    
    cout<<"             MENU DE LA CALCULADORA DE QUEBRADOS"<<endl<<endl;
    cout<<"----------------------------------------------------------------"<<endl;
    cout<<"                    1. Sumar"<<endl;
    cout<<"                    2. Restar"<<endl;
    cout<<"                    3. Multiplicar"<<endl;
    cout<<"                    4. Dividir"<<endl;
    cout<<"                    5. Salir"<<endl;
    cout<<endl<<endl;
    
    /* Procedimiento */
    
    cout<<"Seleccione una opcion:";
    cin>>seleccion;
    
    switch(seleccion)
    {
           case 1:
           
           sumarque(nums,dens,num1,den1,num2,den2);
           escribirque(num1,den1);
           cout<<" + ";
           escribirque(num2,den2);
           cout<<" = ";
           reducirque(nums,dens);
           escribirque(nums,dens);
           cout<<endl;                
           
           break;
           
           case 2:
           
           restarque(nums,dens,num1,den1,num2,den2);
           escribirque(num1,den1);
           cout<<" - ";
           escribirque(num2,den2);
           cout<<" = ";
           reducirque(nums,dens);
           escribirque(nums,dens);
           cout<<endl;      
          
           break;
           
           case 3:
           
           multiplicarque(nums,dens,num1,den1,num2,den2);
           escribirque(num1,den1);
           cout<<" * ";
           escribirque(num2,den2);
           cout<<" = ";
           reducirque(nums,dens);
           escribirque(nums,dens);
           cout<<endl;      
          
           break;
           
           case 4:
           
           dividirque(nums,dens,num1,den1,num2,den2);
           escribirque(num1,den1);
           cout<<" : ";
           escribirque(num2,den2);
           cout<<" = ";
           reducirque(nums,dens);
           escribirque(nums,dens);
           cout<<endl;      
           
           break;
           
           case 5:
           return 0;

           }
    
    /* Salida de resultados */
    
    
    
    system("PAUSE");
    return 0;
}

void leerque(int &num,int &den)
{
    /* Declaración de variables */
    
    char l;
    
    /* Entrada de datos */
    
    cin>>num>>l>>den;
    
}

void escribirque(int num,int den)
{
     /*Salida de resultados*/
     
     if (num%den==0)
     {
        if (num==0)
           cout<<"0";
        else
            cout<<num/den;
     }
     else
     cout<<num<<"/"<<den;
}

void sumarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2)
{
     /*Procedimiento*/
     
     cout<<"Introduzca el primer operando:";
     leerque(num1,den1);
     cout<<"Introduzca el segundo operando:";
     leerque(num2,den2);
     
     nums=num1*den2+num2*den1;
     dens=den1*den2;  
}

void restarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2)
{
     /*Procedimiento*/
     
     cout<<"Introduzca el primer operando:";
     leerque(num1,den1);
     cout<<"Introduzca el segundo operando:";
     leerque(num2,den2);
     
     nums=num1*den2-num2*den1;
     dens=den1*den2;  
}

void multiplicarque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2)
{
     /*Procedimiento*/
     
     cout<<"Introduzca el primer operando:";
     leerque(num1,den1);
     cout<<"Introduzca el segundo operando:";
     leerque(num2,den2);
     
     nums=num1*num2;
     dens=den1*den2;  
}

void dividirque(int &nums,int &dens, int &num1,int &den1,int &num2,int &den2)
{
     /*Procedimiento*/
     
     cout<<"Introduzca el primer operando:";
     leerque(num1,den1);
     cout<<"Introduzca el segundo operando:";
     leerque(num2,den2);
     
     nums=num1*den2;
     dens=num2*den1;  
}

void reducirque(int &num,int &den)
{
     int aux;
     
     aux=den;
     den=den/mcd(num,den);
     num=num/mcd(num,aux);
}

int mcd(int a,int b)
{
        int r;
        while (b!=0)
        {
              r=(a%b);
              a=b;
              b=r;  
        }
        return a;
}

Para enviar comentarios debes estar registrado.

(c) ElRincondelC.com

Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.