Tengo un problema respecto a un programa que debo programar para un trabajo, el cual debe reconocer un número ingresado como palíndromo, y a partir de este número, debe encontrar la moda, ordenar de mayor a menor y dar el máximo y el mínimo de los elementos del palíndromo que se ingrese.
He logrado avanzar algo en él, sin embargo hay algo que está fallando y no sé qué es.
Si me pudieran ayudar, estaría muy agradecido.
Using perl Syntax Highlighting
#!/usr/bin/perl
$numeros[1]= @ARGV[0];
$max=0;
$min=99;
if (&verifica_palindromo($numeros[1]) == 1)
{
print "Es Palindromo\n";
}
else
{
print "No es Palindromo\n";
}
&max_y_min($numeros[1]);
&calcular_moda($numeros[1]);
&ordenar($numeros[1]);
#verifica si el numero ingresado es un palindromo
sub verifica_palindromo()
{
my $num = $_[0];
my $longitud=length($num);
my $reversa = $longitud-1;
my $resultado = 1;
for ($contador=0; $contador < $longitud/2;$contador++)
{
$valor1=substr($num,$contador,1);
$valor2=substr($num,$reversa,1);
$reversa--;
if ($valor1 != $valor2)
{
$resultado=0;
}
}
return $resultado;
}
#da el maximo y el minimo
sub max_y_min()
{
my $numero=$_[0];
my $valor=0;
for($i=0;$i<length($numero);$i++)
{
$valor=substr($numero,$i,1);
if ($max<$valor)
{
$max=$valor;
}
if ($min>$valor)
{
$min=$valor;
}
}
printf("El Maximo numero dentro de la lista es: %d",$max);
printf("\nEl Minimo numero dentro de la lista es: %d\n",$min);
return;
}
# se calcula la moda
sub calcular_moda()
{
my $numero = $_[0];
my $moda = 99;
my $cantidad = 0;
my $tcantidad = 0;
my $valor=0;
for($i=0;$i<length($numero);$i++)
{
$tvalor=substr($numero,$i,1);
$tcantidad=0;
for($j=0;$j<length($numero);$j++)
{
$valor=substr($numero,$j,1);
if ($tvalor == $valor)
{
$tcantidad++;
}
}
if ($moda == 99)
{
$moda=$tvalor;
$cantidad = $tcantidad;
}
else
{
if ($tcantidad > $cantidad)
{
$moda=$tvalor;
$cantidad = $tcantidad;
}
}
}
print "La moda es : $moda\n";
return;
}
# se calcula la moda
sub ordenar()
{
my $numero = $_[0];
my @ordenar;
for($i=0;$i<length($numero);$i++)
{
$tvalor=substr($numero,$i,1);
$ordenar[$i]=$tvalor;
}
@ordenado = sort { $b <=> $a } (@ordenar);
print "Numeros ordenados\n";
for($i=0;$i<length($numero);$i++)
{
print "$ordenado[$i]\n";
}
return;
}
$numeros[1]= @ARGV[0];
$max=0;
$min=99;
if (&verifica_palindromo($numeros[1]) == 1)
{
print "Es Palindromo\n";
}
else
{
print "No es Palindromo\n";
}
&max_y_min($numeros[1]);
&calcular_moda($numeros[1]);
&ordenar($numeros[1]);
#verifica si el numero ingresado es un palindromo
sub verifica_palindromo()
{
my $num = $_[0];
my $longitud=length($num);
my $reversa = $longitud-1;
my $resultado = 1;
for ($contador=0; $contador < $longitud/2;$contador++)
{
$valor1=substr($num,$contador,1);
$valor2=substr($num,$reversa,1);
$reversa--;
if ($valor1 != $valor2)
{
$resultado=0;
}
}
return $resultado;
}
#da el maximo y el minimo
sub max_y_min()
{
my $numero=$_[0];
my $valor=0;
for($i=0;$i<length($numero);$i++)
{
$valor=substr($numero,$i,1);
if ($max<$valor)
{
$max=$valor;
}
if ($min>$valor)
{
$min=$valor;
}
}
printf("El Maximo numero dentro de la lista es: %d",$max);
printf("\nEl Minimo numero dentro de la lista es: %d\n",$min);
return;
}
# se calcula la moda
sub calcular_moda()
{
my $numero = $_[0];
my $moda = 99;
my $cantidad = 0;
my $tcantidad = 0;
my $valor=0;
for($i=0;$i<length($numero);$i++)
{
$tvalor=substr($numero,$i,1);
$tcantidad=0;
for($j=0;$j<length($numero);$j++)
{
$valor=substr($numero,$j,1);
if ($tvalor == $valor)
{
$tcantidad++;
}
}
if ($moda == 99)
{
$moda=$tvalor;
$cantidad = $tcantidad;
}
else
{
if ($tcantidad > $cantidad)
{
$moda=$tvalor;
$cantidad = $tcantidad;
}
}
}
print "La moda es : $moda\n";
return;
}
# se calcula la moda
sub ordenar()
{
my $numero = $_[0];
my @ordenar;
for($i=0;$i<length($numero);$i++)
{
$tvalor=substr($numero,$i,1);
$ordenar[$i]=$tvalor;
}
@ordenado = sort { $b <=> $a } (@ordenar);
print "Numeros ordenados\n";
for($i=0;$i<length($numero);$i++)
{
print "$ordenado[$i]\n";
}
return;
}
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4