public static void Main()
decimal cantidad_pendiente_repartir = importe;
var pesos_de_reparto = new decimal[]{33m,61m,3m};
var pesos_pendiente = pesos_de_reparto.Sum();
foreach(var peso_actual in pesos_de_reparto){
Console.Write(">cantidad_pendiente_repartir: " + cantidad_pendiente_repartir);
Console.Write(" peso_actual: " + peso_actual);
Console.Write(" pesos_pendiente: " + pesos_pendiente);
var importe_repartido = Math.Round(cantidad_pendiente_repartir * peso_actual / pesos_pendiente, 2);
GenerarFacturaRepartida(importe_repartido);
pesos_pendiente -= peso_actual;
cantidad_pendiente_repartir -= importe_repartido;
if(cantidad_pendiente_repartir != 0)
throw new Exception("El cálculo se ha efectuado mal.");
throw new Exception("El cálculo se ha efectuado mal.");
public static void GenerarFacturaRepartida(decimal importe){
Console.WriteLine("Generada factura repartida: " + importe);