[ Foro de C# ]
¿Me quedo optimo o hay una mejor forma ? no me sentí cómodo con el resultado del código la verdad .
using System;
public class Program
{
public static void Main()
{
inicio:
int n1,n2,n3;
Console.WriteLine("Precio del producto: ");
n1=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Total Pagado: ");
n2=Convert.ToInt32(Console.ReadLine());
if (n1<n2){
n3= n2-n1;}
else {
Console.WriteLine("Pago insuficiente. ");
goto inicio;
}
Console.WriteLine("Su cambio es: "+n3);
for (int i=n3; i>=1; i-- )
{
if( i==100 || i==50 || i==20 || i==10 || i==5 || i==2 || i==1 && n3>0){
resta:
if(n3>=i){
n3 = n3-i;
Console.Write(" "+i);}
if(n3!=0 && n3>=i){
goto resta;
}
}
else continue;
}
}
}
Como primer paso a mejorar: no debería haber "goto", sino do-while.
Segundo paso: las variables no deberían llamarse "n1" y "n2", sino nombres más significativos, como "precio" o "importeTotal".
Soluciona eso y vamos a la parte final. ;-)
Perdón por tardar en contestar estuve fuera de la ciudad.
using System;
public class Program
{
public static void Main()
{
int precio,pago,cambio;
do{
Console.WriteLine("Precio del producto: ");
precio = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Total Pagado: ");
pago=Convert.ToInt32(Console.ReadLine());
if (precio>pago)
Console.WriteLine("Pago insuficiente. ");
} while (precio>pago);
cambio = pago-precio;
Console.WriteLine("Su cambio es: "+cambio);
Console.WriteLine("entregar billetes de : ");
for (int i=cambio; i>=1; i-- )
{
if( i==100 || i==50 || i==20 || i==10 || i==5 || i==2 || i==1 && cambio>0){
do{
if(cambio>=i){
cambio = cambio -i;
Console.Write(" "+i);}
}while (cambio!=0 && cambio>=i);
}
else continue;
}
}
}
(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.)