• Publicidad

Ejercicios en Perl

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

Ejercicios en Perl

Notapor NovatoenPerl » 2011-05-13 17:06 @754

:D Buenas Tardes Amigos Perleros :D

Soy nuevo en este ambiente de programación. Soy estudiante de Informática, 1er semestre y estoy empezando a ver Perl. Durante 6 meses estaré viendo este lenguaje y pues me registré a ver si aprendo un poco más y si me podrían ayudar con los ejercicios que tengo que hacer :D

Espero no haber roto alguna regla ya que las que leí creo que estoy en lo correcto...

Ahora tengo una serie de ejercicios por hacer. Ya hice algunos pero hay otros que se me dificulta, entonces pondré para aportar los que ya hice y quisiera que me ayudaran a los que me faltan.


Empiezo

1- Ejercicio Resuelto #1

Calcular el promedio de 50 valores almacenados en un vector. Determinar además cuántos son mayores del promedio, imprimir el promedio, el número de datos mayores que el promedio y una lista de valores.

Pues yo lo hice así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/bin/perl/
  2. inicio;
  3. system(clear);
  4. @vector;
  5. for ( $i = 0; $i < 50; $i++ ) {
  6.     print "Ingrese 50 Valores Cualquiera \n";
  7.     $numero[$i] = <stdin>;
  8.     $vector[$i] = $numero[$i];
  9. }
  10.  
  11. for ( $i = 0; $i < 50; $i++ ) {
  12.     print $numero[$i];
  13. }
  14.  
  15. for ( $i = 0; $i < 50; $i++ ) {
  16.     $suma = $suma + $numero[$i];
  17. }
  18. print "Los Números agregados son $i \n";
  19.  
  20. $promedio = $suma / 5;
  21.  
  22. print "EL Promedio de los Numeros son $promedio \n";
  23.  
  24. print "Los numeros mayores que promedio son: \n";
  25.  
  26. for ( $i = 0; $i < $promedio; $i++ ) {
  27.     if ( $numero[$i] > $promedio ) {
  28.         print "$numero[$i]\n";
  29.     }
  30. }
  31.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2011-05-13 18:00 @792, editado 2 veces en total
Razón: Quitar mayúsculas. Tildes. Formatear el código con Perltidy
NovatoenPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-05-13 16:48 @742

Publicidad

Re: Ejercicios en Perl

Notapor NovatoenPerl » 2011-05-13 17:22 @765

2- Ejercicio resuelto:

Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y así sucesivamente hasta 45; almacenar el resultado en un vector C, e imprimir el vector resultante.

Yo lo hice así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/bin/perl/
  2. inicio;
  3. system(clear);
  4. @vector1;
  5. @vector2;
  6. $suma;
  7.  
  8. print "Introducir 45 numeros  Vector A \n";
  9. for ( $i = 0; $i < 45; $i++ ) {
  10.     $num1[$i]    = <stdin>;
  11.     $vector1[$i] = $num1;
  12. }
  13. print " ######## Los Numeros Introducidos en el Vector A Son ########:\n";
  14.  
  15. for ( $i = 0; $i < 45; $i++ ) {
  16.     print "\t$num1[$i]";
  17. }
  18.  
  19. print "Introducir 45 numeros  Vector B \n";
  20.  
  21. for ( $i = 0; $i < 45; $i++ ) {
  22.     $num2[$i]    = <stdin>;
  23.     $vector2[$i] = $num2;
  24. }
  25. print " ######## Los Numeros Introducidos en el Vector B Son #########\n";
  26.  
  27. for ( $i = 0; $i < 45; $i++ ) {
  28.     print "\t$num2[$i]";
  29. }
  30.  
  31. for ( $i = 0; $i < 45; $i++ ) {
  32.     $suma[$i] = $num1[$i] + $num2[$i];
  33.  
  34. }
  35.  
  36. print " ######## La suma de los vectores A y B son: ########\n";
  37.  
  38. for ( $i = 0; $i < 45; $i++ ) {
  39.     print "\t$suma[$i] \n";
  40. }
  41.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


3- Ejercicio Resuelto:

Llenar un vector de 20 elementos, imprimir la posición y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector sean diferentes.

Yo lo hice así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/bin/perl/
  2. inicio;
  3. system(clear);
  4. @vector1;
  5. for ( $i = 0; $i < 20; $i++ ) {
  6.     print " Introduzca Numeros Para cargar el Vector \n";
  7.     $num[$i]     = <stdin>;
  8.     $vector1[$i] = $num;
  9. }
  10.  
  11. print "Los Numeros Cargados en el Vector son: \n";
  12.  
  13. for ( $i = 0; $i < 20; $i++ ) {
  14.     print "$num[$i]";
  15. }
  16.  
  17. $mayor    = $num[0];
  18. $repetido = 1;
  19.  
  20. for ( $i = 0; $i < 20; $i++ ) {
  21.     if ( $mayor < $num[$i] ) {
  22.         $mayor    = $num[$i];
  23.         $repetido = 1;
  24.     }
  25. }
  26. print " EL Numero Mayor es \n\n";
  27. print "$mayor";
  28.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


:oops: Cabe destacar aquí que no saqué la posición. No pude =( Si alguien puede lo agradecería.


Ahora los ejercicios que no he podido hacer son:

1.- Almacenar 300 números en un vector; imprimir cuántos son ceros, cuántos son negativos, cuántos son positivos, imprimir además la suma de los negativos y la suma de los positivos.

Tengo una pequeña idea de que es con un arreglo, ¿verdad?, usando un for() y las sentencias if(), elseif() pero aún estoy realizándolo.


2.- Almacenar 150 números en un vector, almacenarlos en otro vector en orden inverso al vector original e imprimir el resultado.

3.- Se tiene almacenado en la memoria de dos vectores M y N de 100 elementos cada uno, hacer un algoritmo y programa que escriba las palabras iguales si los vectores son iguales, y diferente si no lo son.

4.- Se tiene el vector A con 100 elementos almacenados. Diseñe el algoritmo y programa que escriba "Sí" si el vector está ordenado ascendéntemente o "No" si el vector no está almacenado.

5.- Diseñe un algoritmo y programa que lea un número cualquiera y lo busque en el vector X, el cual tiene almacenado 80 elementos. Escribir la posición donde se encuentra el número almacenado en el vector o el mensaje "No" si no lo encuentra. Búsqueda secuencial.

Pues aquí son los que no he podido tratar de hacer, sin embargo ¡estoy en ello!

Una ayudita no caería mal, aparte que les ayuda a ustedes también aprender o a repasar :D

Gracias. Atentamente: Walther Koch of Venezuela.
Última edición por explorer el 2011-05-13 18:01 @792, editado 2 veces en total
Razón: Quitar mayúsculas. Tildes. Formatear el código con Perltidy
NovatoenPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-05-13 16:48 @742

Re: Ejercicios en Perl

Notapor ileiva » 2011-05-13 17:53 @787

¡Buenas!

¡Qué bueno!, otra persona más que descubre la belleza de la Informática :D

El foro está para resolver dudas, así que siempre habrá disposición para ayudar. Pero ojo, utiliza el buscador antes para saber si alguien ha tenido el mismo problema que tú y si es que ha sido resuelto.

En este caso los ejercicios son bien específicos. Sólo un par de acotaciones:

- ¿Qué es eso en la línea 2, "inicio;"?
- Podrías utilizar sólo un arreglo, en vez de @vector y @numero.
- Supongo que el cálculo del promedio lo escribiste mal en el post, porque debería ser divido en 50.
- El for para imprimir los números mayores que promedio está mal. Debería ser así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. for($i = 0; $i < 50; $i++){
  2.     if($numeros[$i] > $promedio){
  3.         print "$numeros[$i]\n";
  4.     }
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ojo con el límite de $i, ya que debes revisar los 50 números en el vector.

Saludos.
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Ejercicios en Perl

Notapor explorer » 2011-05-13 18:00 @791

Bienvenido a los foros de Perl en español, NovatoenPerl.

Muchas gracias por tus aportes. Seguro que a más gente le vendrán bien, como retos para aprender.

Hay algunos detalles que habría que comentar...

  • en todos los programas llamas a la función inicio(). ¿Dónde está y para qué sirve?
  • las variables no se declaran así:
    Sintáxis: [ Descargar ] [ Ocultar ]
    Using perl Syntax Highlighting
    1. @vector1;
    2. @vector2;
    3. $suma;
    Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
    En Perl, normalmente, no se declaran las variables hasta que se usan, directamente. Ahora bien, en los últimos años se recomienda declarar siempre todas las variables que se vayan a usar (aunque no se dice dónde ni cuándo). El motivo es que Perl nos puede ayudar a localizar errores si nos hemos equivocado a la hora de escribir los nombres de las variables. Es una práctica muy recomendable, para las personas que están empezando con Perl, a que todos los programas comiencen con las líneas 'use strict;' y 'use warnings;', tal como se explica aquí.
  • En el ejercicio 1 hay un error en la línea 20: estás calculando la media como si fueran 5 elementos, pero en realidad son 50.
  • En todos los ejercicios no usas la variable @vector para nada, por lo que sobra.
  • Lo mismo se puede decir de la variable $repetido, en el ejercicio 3.
  • Para saber la posición, ya te la da la variable $i, que recorre todos los índices. Solo tienes que guardar el valor del índice del elemento que es mayor, en ese momento.

P.D. ileiva se me adelantó. Lo siento.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ejercicios en Perl

Notapor ileiva » 2011-05-13 18:25 @809

Respecto de los ejercicios que no has podido hacer, la "complejidad" de estos recae más que nada en la parte algorítmica, no en los detalles del lenguaje. Te daré un par de hints.

1.- Exacto, debes usar un arreglo. Luego lo recorres (for) y utilizas uno o más condicionales para comprobar lo que te piden.
2.- Sólo necesitas saber recorrer arreglos.
3.- Recorres ambos arreglos al mismo tiempo y vas comparando elemento a elemento (primero de A con primero de B, etc). Similar a la suma de dos vectores.
4.- Recorrer un arreglo e ir comprobando que cada elemento es mayor que el anterior, excepto el primero.
5.- Sólo necesitas saber recorrer arreglos y almacenar la posición con la variable $i, tal como mencionó Explorer.

Si llegases a tener problemas en pasar las ideas a código sólo hazlo saber. Haciendo uno o dos problemas los otros saldrán rápido :).

Saludos.
Avatar de Usuario
ileiva
Perlero nuevo
Perlero nuevo
 
Mensajes: 30
Registrado: 2011-04-23 03:25 @184
Ubicación: Santiago, Chile

Re: Ejercicios en Perl

Notapor NovatoenPerl » 2011-05-17 12:08 @547

:shock: Primero que todo disculpen la tardanza había estado muy ocupado :D

¡Primera duda!

¡La función "Inicio" lo coloco para empezar el programa! Así me lo explicó el profesor, creo que es más de "Adorno" que necesario.

Ok, sí, es verdad podría utilizar solo un arreglo, pero como estoy empezando no sé esos detalles; lo trataré de hacer con ese dato :D

Lo de calcular el mayor que el promedio me da correctamente así como lo puse.

La variable promedio equivale a <50 arreglando la línea de código con lo que pusistes me da igual :D

¡En la línea 20 sí hay un error! Debido a que no lo corregí está <5 porque estaba practicando con 5 números ¡para no ingresar 50!

Sintáxis: [ Descargar ] [ Ocultar ]
  1. En todos los ejercicios no usas la variable @vector para nada, por lo que sobra. 


¡¡No sé qué quieres decir con eso!! :lol:
NovatoenPerl
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2011-05-13 16:48 @742

Re: Ejercicios en Perl

Notapor explorer » 2011-05-17 12:17 @554

Que @vector, aunque está dentro de tus programas, no lo estás usando, así que se puede quitar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
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 1 invitado

cron