#!/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 = <STDIN>);

GET:
$string =~ m/(\d+)\.*(\d*)\s*\-\s*(\d+)\.*(\d*)[*x ]*[pP]/;
until (defined $1 && defined $3){
    print "ERROR. q = ";
    chomp ($string = <STDIN>);
    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__
  

