• Publicidad

Ejercicios con números

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

Ejercicios con números

Notapor leonardocollado » 2012-11-17 23:24 @017

Hola, necesito hacer los siguientes ejercicios en Perl... Espero que me ayuden.

1) leer un conjunto de datos (números) y mostrar en pantalla los números leídos que tengan un elemento (número) central par.

2) leer un número y su base y muestre en pantalla su equivalente en base 12.

Espero que puedan resolverlos... ¡Saludos!
leonardocollado
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2012-11-17 23:17 @012

Publicidad

Re: Ejercicios con números

Notapor explorer » 2012-11-18 10:40 @486

Bienvenido a los foros de Perl en Español, leonardocollado.

Yo ya he conseguido hacerlos. ¿Qué tal tú?

Si tienes problemas con el código, aquí te podremos resolver las dudas.

¡Adelante!
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: Ejercicios con números

Notapor leonardocollado » 2012-11-18 17:44 @781

¿Podrías mostrar cómo lograste hacerlo? O enviarme los códigos que usaste.
leonardocollado
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2012-11-17 23:17 @012

Re: Ejercicios con números

Notapor explorer » 2012-11-18 18:08 @797

Para el primer caso, lo que hago es un bucle para leer los números que entran por la entrada estándar. Para cada uno de ellos, primero saco su longitud en dígitos. Si la longitud es impar, el puesto central lo ocupa un solo dígito, que extraigo usando substr(), de la posición media, calculada dividiendo la longitud entre dos y redondeando por arriba. Pero si longitud es par, la posición central la ocupan los dos dígitos centrales. Lo mismo que antes, calculo la posición media, y luego con substr() extraigo los dos caracteres. Solo queda decir si el dígito o dígitos extraídos son pares o no, para lo cual uso el operador módulo (%).

Para el segundo caso, leo el número y la base. Lo transformo en base decimal recorriendo los dígitos y multiplicando por la base. Luego, a partir del número en base decimal, lo voy dividiendo por la base 12 y lo voy sacando en pantalla.

Es cuestión de trasladar los procedimientos que usamos de matemáticas para pasar de base, a lenguaje Perl.
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: Ejercicios con números

Notapor leonardocollado » 2012-11-18 19:30 @854

¡¡¡ Gracias !!! Te pasarías si publicas los códigos en el lenguaje Perl de cada pregunta ya que lo necesito para terminar un trabajo y tengo poco tiempo y recién estoy aprendiendo a usar este lenguaje.
leonardocollado
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2012-11-17 23:17 @012

Re: Ejercicios con números

Notapor explorer » 2012-11-18 19:41 @862

Pero el ejercicio lo tienes que hacer tú. Si te damos el código ya hecho, no aprenderás nada.

Intenta escribir el código poco a poco. Te ayudaremos con las dudas.
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: Ejercicios con números

Notapor leonardocollado » 2012-11-19 11:06 @504

Esto fueron los códigos que usé para la pregunta 2:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $num = <stdin>;
  2. $sum1 = 0;
  3. $pot1 = 1;
  4. $sum2 = 0;
  5. $pot2 = 1;
  6. while ( $num <> 0 ) {
  7.     print "n=";
  8.     $n    = <stdin>;
  9.     $d1   = int( $num / 10 );
  10.     $a1   = $num - 10 * $d1;
  11.     $sum1 = $sum1 + $pot1 * a1;
  12.     $num  = $d1;
  13. }
  14. while ( $sum1 <> 0 ) {
  15.     $d2   = int( $sum1 / 12 );
  16.     $a2   = sum1- 12 * $a2;
  17.     $sum2 = $sum2 + $pot2 * $a2;
  18.     $pot2 = 10 * pot2;
  19.     $sum1 = $d2;
  20. }
  21. print "sum2=$sum2+$pot2*$a2
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


y me dice el siguiente error:

Operator or semicolon missing before *a1 at ./ejercicio.pl line 14.
Ambiguous use of * resolved as operator * at ./ejercicio.pl line 14.
syntax error at ./ejercicio.pl line 8, near "<>"
syntax error at ./ejercicio.pl line 16, near "}"
Execution of ./ejercicio.pl aborted due to compilation errors.


¿Qué debo corregir del código?
leonardocollado
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2012-11-17 23:17 @012

Re: Ejercicios con números

Notapor leonardocollado » 2012-11-19 11:52 @536

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. print "num=";
  3. $num  = <stdin>;
  4. $sum1 = 0;
  5. $pot1 = 1;
  6. $sum2 = 0;
  7. $pot2 = 1;
  8. while ( $num != 0 ) {
  9.     print "n=";
  10.     $n    = <stdin>;
  11.     $d1   = int( $num / 10 );
  12.     $a1   = $num - 10 * $d1;
  13.     $sum1 = $sum1 + $pot1 * $a1;
  14.     $num  = $d1;
  15. }
  16. while ( $sum1 = !0 ) {
  17.     $d2   = int( $sum1 / 12 );
  18.     $a2   = sum1- 12 * $a2;
  19.     $sum2 = $sum2 + $pot2 * $a2;
  20.     $pot2 = 10 * $pot2;
  21.     $sum1 = $d2;
  22. }
  23. print "sum2=$sum2+$pot2*$a2"
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahí arreglé algunos errores pero ahora no me resulta lo que quiero que desarrollé... ¿qué códigos estarán mal?
Última edición por explorer el 2012-11-19 12:01 @542, editado 1 vez en total
Razón: Formateado de código con Perltidy y poner marcas Perl
leonardocollado
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2012-11-17 23:17 @012

Re: Ejercicios con números

Notapor explorer » 2012-11-19 12:10 @548

La expresión

$sum1 = !0

no es correcta. Bueno, Perl sí ve una expresión correcta, pero seguro que lo que quieres es hacer una asignación en mitad de un while().

En la línea 18 creo que debería ser $sum1, y no sum1.

En cuanto a las operaciones matemáticas, no sé si serán correctas.

Ten en cuenta que un número escrito en base 12 necesita ser escrito con los dígitos el cero al nueve, más las letras 'A' a 'C'.
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


Volver a Básico

¿Quién está conectado?

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

cron