🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: chile.comp.programacion
2 messages
2 total messages Started by AlejandroArias Thu, 06 Mar 2008 17:04
Optimizar Switch
#530
Author: AlejandroArias
Date: Thu, 06 Mar 2008 17:04
71 lines
2446 bytes
Saludos, tengo una funcion PHP:

function calculartarifa($cod, $min){
	switch ($cod):
			case 31:
				if ($min < 4)
					$pre =150;
				elseif ($min < 11)
					$pre = 122;
				else
					$pre = 79;
					break;
			case 41:
				if ($min < 4)
					$pre =114;
				elseif ($min < 11)
					$pre = 94;
				else
					$pre = 65;
					break;
			case 51:
				if ($min < 4)
					$pre =125;
				elseif ($min < 11)
					$pre = 108;
				else
					$pre = 75;
					break;
			case 61:
				if ($min < 4)
					$pre =321;
				elseif ($min < 11)
					$pre = 295;
				else
					$pre = 184;
					break;
			case 71:
				if ($min < 4)
					$pre =287;
				elseif ($min < 11)
					$pre = 236;
				else
					$pre = 156;
					break;
			case 81:
				if ($min < 4)
					$pre =405;
				elseif ($min < 11)
					$pre = 385;
				else
					$pre = 245;
					break;
			case 91:
				if ($min < 4)
					$pre =501;
				elseif ($min < 11)
					$pre = 400;
				else
					$pre = 325;
					break;
			default:
				print "<i>No es un Codigo de Area Valido - </i>";
				break;
	endswitch;

		return $pre * $min;

}

Dependiendo del cod del area y de los minutos tomados es el precio del
minuto, existe alguna manera de hacerlo mas optimo? en menos lineas?
Re: Optimizar Switch
#531
Author: Jos� Miguel Santib��ez
Date: Thu, 06 Mar 2008 21:04
107 lines
4467 bytes
En el cap�tulo anterior (news:290af3a9-6793-4bc3-b49d-318c65272c71
@y77g2000hsy.googlegroups.com), AlejandroArias <jalejandro0211@gmail.com> 
dijo:

> Saludos, tengo una funcion PHP:
> 
> function calculartarifa($cod, $min){
>      switch ($cod):
>                case 31:
>                     if ($min < 4)
>                          $pre =150;
>                     elseif ($min < 11)
>                          $pre = 122;
>                     else
>                          $pre = 79;
>                          break;
>                case 41:
>                     if ($min < 4)
>                          $pre =114;
>                     elseif ($min < 11)
>                          $pre = 94;
>                     else
>                          $pre = 65;
>                          break;
>                case 51:
>                     if ($min < 4)
>                          $pre =125;
>                     elseif ($min < 11)
>                          $pre = 108;
>                     else
>                          $pre = 75;
>                          break;
>                case 61:
>                     if ($min < 4)
>                          $pre =321;
>                     elseif ($min < 11)
>                          $pre = 295;
>                     else
>                          $pre = 184;
>                          break;
>                case 71:
>                     if ($min < 4)
>                          $pre =287;
>                     elseif ($min < 11)
>                          $pre = 236;
>                     else
>                          $pre = 156;
>                          break;
>                case 81:
>                     if ($min < 4)
>                          $pre =405;
>                     elseif ($min < 11)
>                          $pre = 385;
>                     else
>                          $pre = 245;
>                          break;
>                case 91:
>                     if ($min < 4)
>                          $pre =501;
>                     elseif ($min < 11)
>                          $pre = 400;
>                     else
>                          $pre = 325;
>                          break;
>                default:
>                     print "<i>No es un Codigo de Area Valido - </i>";
>                     break;
>      endswitch;
> 
>           return $pre * $min;
> 
> }
> 
> Dependiendo del cod del area y de los minutos tomados es el precio del
> minuto, existe alguna manera de hacerlo mas optimo? en menos lineas?
> 

hmmm....

function calculartarifa($cod, $min){

  $pre[31][0] = 150;
  $pre[31][1] = 122;
  $pre[31][2] = 79;

  $pre[41][0] = 114;
  $pre[41][1] = 94;
  $pre[41][2] = 65;

  ...

  if (isset($pre[cod])) {
    if ($min < 4)
      return $pre[cod][0] *$min;
    elseif ($min < 11)
      return $pre[cod][1] *$min;
    else
      return $pre[cod][2] *$min;
  } else {
      print "<i>No es un Codigo de Area Valido - </i>";
  }


-- 
Apoye a la campa�a de alfabetizaci�n y  |       Jose M. Santiba�ez A.
ordenaci�n de las news, cada post en su |          <jms@nivel5.cl>
lugar y el lugar exacto para cada post  |        <http://caos.cl/jms>
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads