[ Foro de C# ]

Ejercicio propuesto 2.6.8: Crea un programa que devuelva el cambio de una compra

22-Dec-2020 02:04
Invitado (Frank)
2 Respuestas

¿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;
		}
			
	}
}


 


22-Dec-2020 14:35
Nacho Cabanes (+75)

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.  ;-)


08-Jan-2021 01:25
Invitado (Frank)

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.)