#!/usr/bin/perl -w use feature qw(say); say "SIMULADOR DE DEMANDA"; say "Introduzca la recta de demanda cuyos ingresos quiere maximizar."; say "Ejemplo: q = 1000000 - 1000.7 p"; print "q = "; chomp ($string = ); GET: $string =~ m/(\d+)\.*(\d*)\s*\-\s*(\d+)\.*(\d*)[*x ]*[pP]/; until (defined $1 && defined $3){ print "ERROR. q = "; chomp ($string = ); goto GET; } if (defined $1 && defined $2) { $c0 = $1.".".$2; }elsif (defined $1){ $c0 = $1; }else{ die "Error de lectura. Fin (alfa)."; } if (defined $3 && defined $4) { $c1 = $3.".".$4; }elsif (defined $3){ $c1 = $3; }else{ die "Error de lectura. Fin (beta)."; } $ingresoant = 0; for $p (1..1_000_000){ $ingreso = $p * ($c0 - $c1*$p); if ($ingreso > $ingresoant){ $popt = $p; $qopt = $c0 - $c1*$popt; $ingresoopt = $ingreso; }else{ say "Resultado: A precio $popt"; say "se consumen $qopt unidades"; say "y el ingreso total es $ingresoopt"; exit 0; } $ingresoant = $ingreso; } say "Error de alcance. Precio alto (> 1000000)."; exit 1; __END__