• Publicidad

Ordenar datos con while

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Re: Ordenar datos con while

Notapor perlanegra » 2012-04-14 11:08 @505

Ok, lo incremento, pero ¿¿dónde?? Porque he probado en todos los sitios y no me funciona.
perlanegra
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-04-13 13:05 @587

Publicidad

Re: Ordenar datos con while

Notapor explorer » 2012-04-14 12:43 @571

A ver... no se puede programar con el método de prueba y error en informática, porque, de seguro que tardarás mucho tiempo en encontrar la solución correcta.

¿Tienes claro el algoritmo de ordenación, lo que ha de hacer el programa para que ordene una lista de valores?

Entre las variables, las hay que almacenan los valores a ordenar (como @a), otras que son auxiliares (como $temp), y otras que son contadores, para poder recorrer los índices de @a (como $i y $b).

Las que son contador, comienzan con un valor, y luego, dentro de un bucle, se van incrementando.

Luego tenemos las condiciones. Hay condiciones para los bucles, que marcarán el final del bucle, y condiciones de proceso. En este caso, el proceso es ver si dos elementos están desordenados, y en ese caso, intercambiarles.

A lo mejor el algoritmo de la burbuja es demasiado complicado para tu nivel...

Te recomiendo entonces que pruebes uno más sencillo, como el BogoSort. De hecho, casi lo tienes terminado, para ese algoritmo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ordenar datos con while

Notapor perlanegra » 2012-04-14 13:42 @612

Lo que me has explicado sí lo sabia de la teoría... pero llevarlo a la práctica es duro... Mirando el código de alexclipse sólo puedo pensar que $b++ tengo que ponerlo al final con los $i++... pero no me funciona... Por favor, dime dónde lo tengo que colocar. ¡Muchas gracias!
perlanegra
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-04-13 13:05 @587

Re: Ordenar datos con while

Notapor explorer » 2012-04-14 14:09 @631

El valor de $b debe recorrer los valores de 0 a ($n - $i), así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$b = 0;
while ($b < ($n-$i)) {
    if ($a[$b] > $a[$b+1]) {
        $temp    = $a[$b];
        $a[$b]   = $a[$b+1];
        $a[$b+1] = $temp;
    }
    $b++;
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ordenar datos con while

Notapor perlanegra » 2012-04-14 15:12 @675

Me sigue sin funcionar...

print "Introduzca la cantidad de numeros a ordenar: ";
$n = <STDIN>;
chomp ($n);
$i = 0;
$c = 1;
while ($i < $n)
{
print "Introduzca un numero:";
my $b = <STDIN>;
chomp ($b);
push @a, $b;
$i++;
}
$i = 0;
$c = 1;
if ($c != 0)
{
$b = 0;
while ($b < ($n-$i))
{
if ($a[$b] > $a[$b+1])
{
$temp = $a[$b];
$a[$b] = $a[$b+1];
$a[$b+1] = $temp;
}
$b++;
}
$i++;
}


print "@a\n";

¿¿Qué tengo mal?? No creo que sobre nada... Gracias por todo.
perlanegra
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-04-13 13:05 @587

Re: Ordenar datos con while

Notapor explorer » 2012-04-14 19:02 @834

Prueba con esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print "Introduzca la cantidad de numeros a ordenar: ";
  2. $n = <STDIN>;
  3. chomp($n);
  4. $i = 0;
  5. while ( $i < $n ) {
  6.     print "Introduzca un numero:";
  7.     my $b = <STDIN>;
  8.     chomp($b);
  9.     push @a, $b;
  10.     $i++;
  11. }
  12. $i = 1;
  13. while ($i < $n) {
  14.     $b = 0;
  15.     while ($b < ($n - $i)) {
  16.         if ($a[$b] > $a[$b+1]) {
  17.             $temp        = $a[$b];
  18.             $a[$b]       = $a[ $b + 1 ];
  19.             $a[ $b + 1 ] = $temp;
  20.         }
  21.         $b++;
  22.     }
  23.     $i++;
  24. }
  25. print "Los números ordenados son: @a\n";
  26.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ordenar datos con while

Notapor perlanegra » 2012-04-14 19:49 @867

Muchísimas gracias, de verdad... Por lo visto la variable $c que yo la consideraba como chivato, según venía en el organigrama, me sobraba... Tampoco llegué a entender para qué sirve el chivato...
perlanegra
Perlero nuevo
Perlero nuevo
 
Mensajes: 10
Registrado: 2012-04-13 13:05 @587

Re: Ordenar datos con while

Notapor explorer » 2012-04-14 20:54 @913

¿Te funciona?

Claro... es la solución que alexclipse publicó hace dos días y que no quisiste copiar...

Dos días que te podías haber ahorrado... :(
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados