Ayuda en C++

Iniciado por RafaAlvarez15, 3 Julio 2018, 13:26 PM

0 Miembros y 1 Visitante están viendo este tema.

RafaAlvarez15

Mi idea es realizar un programa que nos pida una cantidad de una compra, ingresemos la cantidad para pagar y nos devuelva el cambio en billetes y monedas, Yo he intentado hacer esto pero no me compila, sabriais encontrar el error que estoy cometiendo. MUCHAS GRACIAS :rolleyes: :rolleyes:

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;


    double b_500;
    double b_200;
    double b_100;
    double b_50;
    double b_20;
    double b_10;
    double b_5;
    double m_2;
    double m_1;
    double m_05;
    double m_02;
    double m_01;
    double m_005;
    double m_002;
    double m_001;



     double cambio(  double cantidad_devolver){

    b_500=cantidad_devolver/500;
    cantidad_devolver = cantidad_devolver% 500;

    b_200=cantidad_devolver/200;
    cantidad_devolver = cantidad_devolver% 200;

    b_100=cantidad_devolver/100;
    cantidad_devolver = cantidad_devolver% 100;

    b_50=cantidad_devolver/50;
    cantidad_devolver = cantidad_devolver% 50;

    b_20=cantidad_devolver/20;
    cantidad_devolver = cantidad_devolver% 20;

    b_10=cantidad_devolver/10;
    cantidad_devolver = cantidad_devolver% 10;

    b_5=cantidad_devolver/5;
    cantidad_devolver = cantidad_devolver% 5;

    m_2=cantidad_devolver/2;
    cantidad_devolver = cantidad_devolver% 2;

    m_1=cantidad_devolver/1;
    cantidad_devolver = cantidad_devolver% 1;

    m_05=cantidad_devolver/0.5;
    cantidad_devolver = cantidad_devolver% 0.5;

    m_02=cantidad_devolver/0.2;
    cantidad_devolver = cantidad_devolver% 0.2;

    m_01=cantidad_devolver/0.1;
    cantidad_devolver = cantidad_devolver% 0.1;

    m_005=cantidad_devolver/0.05;
    cantidad_devolver = cantidad_devolver% 0.05;

    m_002=cantidad_devolver/0.02;
    cantidad_devolver = cantidad_devolver% 0.02;

    m_001=cantidad_devolver/0.01;
    cantidad_devolver = cantidad_devolver% 0.01;



    }











int main()
{
     double precio_compra;
        cout<<"Introduzca el precio de su compra: "; cin>>precio_compra;
             if(precio_compra<=0){
        cout<<"Error, introduzca bien el precio de la compra"<<endl;
        cout<<"Introduzca el precio de su compra: "; cin>>precio_compra;};


     double dinero_entregado;
        cout<<"Introduzca la cantidad entregada: "; cin>>dinero_entregado;
             if(precio_compra>dinero_entregado) {
        cout<<"Error, introduzca bien el precio de la compra"<<endl;
        cout<<"Introduzca la cantidad entregada: "; cin>>dinero_entregado;};


       double cantidad_devolver;

      cantidad_devolver = (dinero_entregado - precio_compra);
      cout<<"Su vuelta es de: "<<cantidad_devolver<<endl;


      cambio(cantidad_devolver);
        cout<<"Su cambio es de: "<<endl;
        cout<<"Billete de 500€: "<<b_500<<endl;
        cout<<"Billete de 200€: "<<b_200<<endl;
        cout<<"Billete de 100€: "<<b_100<<endl;
        cout<<"Billete de 50€: "<<b_50<<endl;
        cout<<"Billete de 20€: "<<b_20<<endl;
        cout<<"Billete de 10€: "<<b_10<<endl;
        cout<<"Billete de 5€: "<<b_5<<endl;
        cout<<"Moneda  de 2€: "<<m_2<<endl;
        cout<<"Moneda  de 1€: "<<m_1<<endl;
        cout<<"Moneda  de 0.5€: "<<m_05<<endl;
        cout<<"Moneda  de 0.2€: "<<m_02<<endl;
        cout<<"Moneda  de 0.1€: "<<m_01<<endl;
        cout<<"Moneda  de 0.05€: "<<m_005<<endl;
        cout<<"Moneda  de 0.02€: "<<m_002<<endl;
        cout<<"Moneda  de 0.01€: "<<m_001<<endl;










    return 0;
}

srWhiteSkull

El compilador te debe poner un mensaje que haga referencia al error y línea.

RafaAlvarez15

C:\Users\Usuario\Desktop\Maquina registradora\main.cpp|30|error: invalid operands of types 'double' and 'int' to binary 'operator%'|



Eso es lo que me aparece en el compilador

srWhiteSkull

Pues obvio, que un operador double no puede ser usado en una operación modular (%). O usas un entero o realiza un casting (int) al double.