Buscando en Google 100 pesetas = 60 céntimos.
Una peseta son 0,6 céntimos. Es decir si multiplico cualquiera que sea el valor de pesetas por 0,6 voy a obtener ese valor en euros.
Por ejemplo 55 pesetas son 33 céntimos de euro.
Teniendo esto, ya puedes convertir cualquier cantidad de Pesetas a euros.
Ahora la parte del cambio. Se busca el cambio óptimo, es decir, darle la menor cantidad de billetes+monedas hasta llegar a la cantidad de euros. Tan sencillo como declarar todos los valores posibles de billetes y monedas e ir restándoselos a la cantidad de euros.
Ejemplo.
El usuario del programa quiere pasar sus 470 pesetas a euros en una máquina y que le de el cambio:
Pasamos pesetas a euros.
centimosDeEuro = pesetas*0'6;
Son 282 céntimos. Es decir 2 euros y 82 céntimos.
En un contenedor guardas todos los valores posibles de billetes y monedas.
500 200 100 50 20 10 5 2 1 0.50 0.20 0.10 0.05 0.02 0.01
Puedes representarlo todo en céntimos si te es más cómodo para no operar con decimales y haces el cambio a euros en el cout.
Ahora para devolver el cambio compruebas cual es la cantidad más grande que puedes dar de esa lista y se lo restas a la cantidad total, esto lo haces en bucle hasta acabar con todo el dinero.
2.82€ - 2€ = 0.82€
0.82€ - 0.50€ = 0.32€
0.32€ - 0.20€ = 0.12€
0.12€ - 0.10€ = 0.02€
0.02€ - 0.02€ = 0.00€
Es decir, le das de cambio una moneda de 2€, una moneda de 50 céntimos, una de 20 centimos, una de 10 centimos y una de 2 céntimos.
Puedes hacer algo estilo:
/****VARIABLES****/
int arrayBilletesMonedasEnCentimos={50000, 20000, 10000.........}
int arrayContadorBilletes {billeteDe500, billeteDe200......}
...
/****PROTOTIPO FUNCIONES****/
/****FUNCION MAIN****/
int main()
{
int pesetas = 0;
int centimosDeEuro = 0;
pesetas = ObtenerPesetasDelUsuario();
centimosDeEuro = CambioPesetasCentimosDeEuros(pesetas);
float euros = centimosDeEuro/100;
cout << endl << pesetas << " pesetas son " << euros << "euros." << endl;
ObtenerCambio(centimosDeEuro);
.....
}
/***DEFINICION FUNCIONES***/
unsigned int ObtenerPesetasDelUsuario()
{
cout << "pon pesetas" << endl;
cin >> pesetas;
return pesetas;
}
unsigned int CambioPesetasCentimosDeEuros (pesetas)
{
centimosEuro = pesetas * 0.60;
return centimosEuro;
}
void ObtenerCambio (centimosEuro)
{
for (int i = 0; centimosEuro != 0; ++i)
{
if (arrayBMEC[i] >= centimosEuro)
{
centimosEuro -= arrayBMEC[i];
arrayCB[i] += 1;
}
}
}
Completalo y déjalo bien presentado.
El otro ejercicio: " Una funcion que ayude a unir los numeros a,b,c,d en un solo numero para poder redondearlo ".
No sé a que se refiere "unirlos" en un solo número. Sumarlos? Poner uno al lado del otro?
Y menos aún entiendo lo de "que ayude"... Tienes que ayudar la función? O tiene que hacerlo?
Si un profesor me pide eso tal cual le hago algo así:
string numeros ="";
numeros += a;
numeros += b;
numeros += c;
numeros += d;
cout << endl << "El numero \"unido\" es: << static_cast<int>(numeros);
Y para aproximar miro el segundo y le sumo o no 1 al primero si es o pasa de 5 el segundo. Ya lo hago antes de meterlos en el string.
if (b >= 5) {a++; b=0; c=0; d=0;}
int numero = a;
numero = numero*1000;
Estes ejercicios son para que aprendas. Pero muchos profesores mandan hacer cosas sin explicar nada. Asique mírate libros de C++ por tu cuenta y pregunta por el foro lo que no entiendas o no consigas hacer. Si esperas que un profesor consultando un libro de cuando había pesetas se va a preocupar de enseñarte nada cuando ni se molesta en actualizar un libro de ejercicios o hacerlo el mismo... Pues vas fino