Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Xanz en 11 Febrero 2011, 21:35 PM

Título: Problema Calculadora en Perl
Publicado por: Xanz en 11 Febrero 2011, 21:35 PM
Buenas,la verdad soy nuevo en perl y estoy intentando hacer una calculadora.
Estoy en terminandola pero algo esta mal y no se que es xD
Vean mi codigo y expliquenme que esta mal..
http://pastebin.com/iP6Wf12x

Muchas gracias de antemano.
Título: Re: Problema Calculadora en Perl
Publicado por: Edu en 11 Febrero 2011, 22:20 PM
Deja el codigo aca siempre ya q muyy largo no sera
Título: Re: Problema Calculadora en Perl
Publicado por: Shell Root en 11 Febrero 2011, 22:30 PM
Deberías de usar funciones, algo como esto.
Código (perl) [Seleccionar]
#!/usr/bin/perl


print "CALCURADORA\n\n";
print "Teclea el numero de la accion que desees realizar:\n";
print "0 - Salir\n";
print "1 - Sumar\n";
print "2 - Restar\n";
print "3 - Multiplicar\n";
print "4 - Dividir\n";
$sAccion = <STDIN>;

print &sAcciones($sAccion)."\n";

# Functión para pedir números.
sub sPedirNumeros{
  $sCount = shift; # @Parametro 1, contador de números.
  print "Ingrese número " . $sCount . ": ";
  $sNumero = <STDIN>;
  return $sNumero;
}

# Functión para las acciones de la calculadora.
sub sAcciones{
  $sAccion = shift; # @Parametro 2, acción a realizar.
  $sNum = 0;
  if( $sAccion == "0" ){
    return 0;
  }else{
    print "Cuantos números?\n";
    $sCantNum = <STDIN>;
    if( $sAccion == "1" ){
      for($i=0; $i<$sCantNum; $i++){
        $sNum = $sNum + &sPedirNumeros($i + 1);
      }
      return $sNum;
    }elsif( $sAccion == "2" ){
      for($i=0; $i<$sCantNum; $i++){
        $sNum = $sNum - &sPedirNumeros($i + 1);
      }
      return $sNum;
    }elsif( $sAccion == "3" ){
      for($i=0; $i<$sCantNum; $i++){
        $sNum = $sNum * &sPedirNumeros($i + 1);
      }
      return $sNum;
    }elsif( $sAccion == "4" ){
      for($i=0; $i<$sCantNum; $i++){
        $sNum = $sNum / &sPedirNumeros($i + 1);
      }
      return $sNum;
    }
  }
}


PD: Aún me falta, pero te servirá de guía.