20 octubre 2006

Simplificando un problema con funciones.



Simplificación de un problema.

En el problema del 12 de octubre en donde teniamos que evaluar la edad y dependiendo la edad le corresponderia pagar un descuento. Utilizaremos este código para ejemplificar el uso de Funciones.
...
if (edad >=5 && edad <= 14)
{
cat1 = cat1 + (boleto*.35F);
pago = boleto - (boleto*.35F);
Console.WriteLine ("Total a pagar: {0}",pago);
}
...


Vemos que esta porción de código se tiene que repetir por cada categoría. Vamos a modularizar este código de tal forma que lo podamos reutilizar para cada caso.

static float evaluaredad (float porciento, float acumulador,int vboleto)

{float pago;
acumulador=acumulador+(vboleto*porciento);
pago= vboleto-(vboleto*porciento);
Console.WriteLine("total a pagar:{0}",pago);
return acumulador;
}

Este código queda posicionado dentro de la clase principal, de tal forma que lo podamos reutilizar las veces requeridas.
La función regresa un valor y recibe 3 valores. Regresa el el valor del acumulador despues de haber sumado el descuento dado al cliente. Recibe 3 parametros, el descuento aplicado segun la categoria, el valor actual del acumulador dentro de la funcion principal y el valor del boleto.

using System;

namespace kungfuciones
{

class Class1
{
static float evaluaredad (float porciento, float acumulador,int vboleto)
{float pago;
acumulador=acumulador+(vboleto*porciento);
pago= vboleto-(vboleto*porciento);
Console.WriteLine("total a pagar:{0}",pago);
return acumulador;
}


[STAThread]
static void Main(string[] args)
{
string opc;
int edad;
float cat1=0,cat2=0,cat3=0,cat4=0,cat5=0;
do
{
Console.WriteLine("dame la edad");
edad=int.Parse(Console.ReadLine());

if (edad>=5&&amp;amp;amp;edad<=14) cat1=evaluaredad(.35F,cat1,200); if (edad>=15&&edad<=19) cat2=evaluaredad(.25F,cat2,200); if (edad>=20&&edad<=45) cat3=evaluaredad(.10F,cat3,200); if (edad>=46&&edad<=65) cat4=evaluaredad(.25F,cat4,200); if (edad>65)
cat5=evaluaredad(.35F,cat5,200);
Console.WriteLine("hay mas clientes?si/no");
opc=Console.ReadLine();
}while ( opc=="si");
Console.WriteLine("en la categoria 1 se ahorraron los clientes {0}",cat1);
Console.WriteLine("en la categoria 2 se ahorraron los clientes {0}",cat2);
Console.WriteLine("en la categoria 3 se ahorraron los clientes {0}",cat3);
Console.WriteLine("en la categoria 4 se ahorraron los clientes {0}",cat4);
Console.WriteLine("en la categoria 5 se ahorraron los clientes {0}",cat5);
Console.ReadLine();


}
}
}

Este seria el resultado final en donde despues de evaluar cada caso de cada categoría mandamos llamar la funcion la cual hara el descuento y regresara el valor acumulado.

*Este programa fue contribución de nuestro compañero Luis Garcia, Gracias por su contribución

No hay comentarios.: