• Publicidad

Evaluador de expresiones aritméticas

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

Evaluador de expresiones aritméticas

Notapor brian_canche » 2010-05-17 14:18 @637

¡¡Buen día!!

Soy principiante en este lenguaje y tengo un proyecto que hacer el cual no tengo idea de cómo empezar.

El proyecto consiste en ingresar al programa una expresión aritmética como esta: (8+3)*(5-4) y sus variantes con operadores básicos (+-*\). Resulta que puedo hacer uso de los dígitos del 0 al 9 y solamente positivos, tengo pensado que debo ingresar una cadena y convertirla en arreglo, convertirlo para recorrer este arreglo y a la vez buscar los respectivos signos de operación y paréntesis pero no tengo idea de cómo hacerlo.

Si me pudieran dar una pequeña iluminación estaría muy agradecido... Gracias de antemano...
brian_canche
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-05-16 12:23 @558

Publicidad

Re: Evaluador de expresiones aritméticas

Notapor explorer » 2010-05-17 15:16 @677

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

Supongo que te refieres a algo más elaborado que la solución obvia: hacer que sea el propio Perl el que interprete la expresión, y la evalúe.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. print "Introduzca la expresión a evaluar. (Control-C para terminar)\n";
  4.  
  5. while (my $expresion = <>) {
  6.  
  7.     my $resultado = eval $expresion;
  8.  
  9.     if ($@) {
  10.         warn "ERROR en la evaluación. Expresión incorrecta\n";
  11.     }
  12.     else {
  13.         say "Resultado: $resultado";
  14.     }
  15. }
  16.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Perl permite tomar una expresión y pasarla por su sistema de interpretación de expresiones, en tiempo de ejecución, algo que no tienen otros lenguajes. Con ello podemos crear código Perl en tiempo de ejecución o, como en este caso, evalúe expresiones matemáticas sencillas y darnos su resultado.

En cuanto a la forma de hacerlo de la forma clásica, debes hacer un programa que cree el árbol de operadores y operandos, y luego recorrerlo de forma recursiva, podando los nodos que se pueden resolver de forma directa.

Esta es la forma normal de resolverlo, mediante árboles. Pero primero debes resolver el problema de interpretar la expresión, mientras creas el árbol.
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: Evaluador de expresiones aritméticas

Notapor brian_canche » 2010-05-17 19:37 @859

¡¡¡Hola de nuevo!! y muchas gracias por la rápida respuesta. ¡¡Creo que ha sido no solo una pequeña iluminación!! Me has mostrado el camino completo. Creo que debo investigar más sobre comandos en Perl puesto que derivado de esto son la mayoría de mis dudas. Proseguiré de esta manera y les contaré cualquier dificultad que resulte o el programa finalizado...
brian_canche
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2010-05-16 12:23 @558

Re: Evaluador de expresiones aritméticas

Notapor alvarotoledoguapo » 2010-05-25 22:47 @991

explorer no te awuebes
alvarotoledoguapo
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2010-05-25 22:41 @987


Volver a Básico

¿Quién está conectado?

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