[ Foro de C# ]

Programa no hace lo que necesito

03-Apr-2016 00:37
Invitado (werodiaz)
1 Respuestas

Hola amigos una molestia estoy haciendo un programaorientado a objetos pero no me hace lo que pido se los envío haber si me pueden ayudar a decifrar que es lo que estoy haciendo mal al programa debo darle el precio de un articulo y debe decirme cuanto le sobra y decirme cuantos billetes de 1000, 500, 200, 100, 50, 20, 10, 5 y 1 peso les anexo el programa, por su orientacion gracias


using System;

interface devo
{
void metodo_if();
void mostrar_resultados();

}
class devolucion : devo
{
int c1=0, c2=0, c3=0, c4=0, c5=0, c6=0, c7=0, c8=0,c9=0, prepro, pago, devo = 0;

public void metodo_if()

{

if(devo >= 1000){
c1= devo / 1000;
devo=devo % 1000;
}
if(devo >= 500){
c2= devo / 500;
devo=devo % 500;
}
if(devo >= 200){
c3=devo/200;
devo=devo % 200;
}
if(devo >= 100){
c4=devo/100;
devo=devo % 100;
}
if(devo >= 50){
c5=devo/50;
devo=devo % 50;
}
if(devo >= 20){
c6=devo/20;
devo=devo % 20;
}
if(devo >= 10){
c7=devo/10;
devo=devo % 10;
}
if(devo >= 5){
c8=devo/5;
devo=devo % 5;
}
if(devo >= 1){
c9=devo/1;
devo=devo % 1;

}

{


//Ingresamos Precio del Producto
Console.Write("Ingrese el Precio a pagar por el cliente : ");
prepro = int.Parse(Console.ReadLine());
//Ingresamos Pago que Realiza el cliente
Console.Write("Ingrese el Pago que Realiza el Cliente: ");
pago = int.Parse(Console.ReadLine());
//Calculamos el Vuelto o Devolucion
devo = pago - prepro;
//Mostramos el Cambio

}
}

public void mostrar_resultados()
{

Console.WriteLine("El cambio a entregar es de :"+devo); 
Console.WriteLine("Entregar "+c1+ " billetes de 1000 pesos"); 
Console.WriteLine("Entregar "+c2+ " billetes de 500 pesos");
Console.WriteLine("Entregar "+c3+ " billetes de 200 pesos");
Console.WriteLine("Entregar "+c4+ " billetes de 100 pesos");
Console.WriteLine("Entregar "+c5+ " billetes de 50 pesos");
Console.WriteLine("Entregar "+c6+ " billetes de 20 pesos");
Console.WriteLine("Entregar "+c7+ " monedas de 10 pesos");
Console.WriteLine("Entregar "+c8+ " monedas de 5 pesos");
Console.WriteLine("Entregar "+c9+ " monedas de 1 peso");

}
}
class salida

{
static void Main()
{

devolucion x = new devolucion();
x.metodo_if();
x.mostrar_resultados();
Console.ReadKey();

}
}


 


03-Apr-2016 23:43
Nacho Cabanes (+83)

Por una parte, el programa sin tabular (o quizá copiado desde un original tabulado con caracteres de tabulación, no con espacios) resulta muy difícil de seguir.

El fallo más importante es que comparas las devoluciones con "if" en vez de con "while", de modo que se comportará de forma incorrecta cuando haya que devolver más de una unidad de cada billete o moneda.

Además, hay otros problemas menores, como el uso de muchas variables globales con nombres poco claros, así como el propio nombre de tu función "metodo_if" que también resulta poco legible. ¿Te obligan a que tengan esos nombres?

El código se podría simplificar mucho si empleas arrays para memorizar los tipos de monedas permitidos, pero no sé si te autorizan a utilizarlos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)