Tras vuestro pequeño debate de la recursividad, sigo con lo mío...
A ver, el ejercicio (para refrescar la memoria a todos) era hacer un programa en el que se calculasen áreas de cuadrados y rectángulos.
Lo quería hacer de forma que al principio te diese la posibilidad de seleccionar entre lo que quieres calcular (cuadrado o rectángulo) de ahí que use el módulo Term::InKey.
Creo haber solucionado aquel problema de que, cuando pide el programa un 1 o un 2, si introducías un 1 todo prefecto, si introducías un 2 todo perfecto y si introducías una letra pues te calculaba el área de un rectángulo jejeje.
Ahora el código es así... he usado un elsif. A ver que os parece.
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict
;
use Term
::InKey;
print "Para calcular el area de un cuadrado pulsa 1 \n";
print "Para calcular el area de un rectangulo pulsa 2 \n";
my $eleccion = &ReadKey;
if ($eleccion == 1) {
# Cálculo del área del cuadrado
print "Introduce el valor del lado del cuadrado: ";
my $lado = <STDIN>;
chomp($lado);
my $area_cuadrado = $lado * $lado;
print "El area del cuadrado es $area_cuadrado";
}
elsif ($eleccion == 2) {
# Cálculo del área del rectángulo
print "Introduce el valor del lado \"a\" del rectangulo: ";
my $lado_a = <STDIN>;
chomp($lado_a);
print "Introduce el valor del lado \"b\" del rectangulo: ";
my $lado_b = <STDIN>;
chomp($lado_b);
my $area_rectangulo = $lado_a * $lado_b;
print "El area del rectangulo es $area_rectangulo";
}
else {
print "El valor introducido no es un valor valido";
}Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
*** Perdón por no poner tildes en el código, pero si las pongo me salen letras extrañas al usar la consola de Windows, aun usando Kedit ***
Voy mirando el siguiente ejercicio.
5) Encontrar áreas de triángulos y triángulos no rectángulos.Tengo una duda sobre cómo plantear este ejercicio, porque el área de un triángulo y de un triángulo no rectángulo se calculan igual, ambos son triángulos, por lo que el área = base*altura/2
Aquí las variables que pide al usuario deben ser la base y la altura, por lo que el código es el mismo para un triangulo rectángulo que para uno no rectángulo... no sé muy bien cuál es la finalidad de este ejercicio. A ver si creating021 me orienta un poco.
Quedaría resuelto con algo así:
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict
;
print "Introduce el valor de la base del triangulo: ";
my $base = <STDIN>;
chomp $base;
print "Introduce el valor de la altura del triangulo: ";
my $altura = <STDIN>;
chomp $altura;
my $area_triangulo = ($base * $altura) / 2;
print "El area del triangulo es: " , $area_triangulo;Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Aunque ahora que lo pienso, quizás lo que tu querías era que los datos a introducir fueran los lados de los triángulos entonces en el caso de un triangulo rectángulo basta con saber el valor de dos de los lados y sino es es rectángulo debemos de saber el valor de los tres lados (que alguien me corrija si estoy equivocado).... es eso lo que se buscaba con este ejercicio