#!/usr/bin/perl -w use strict; use Safe; print <); print " normal : "; chomp(my $b = ); print " optimista: "; chomp(my $c = ); print "Cálculo puntual en : "; chomp(my $x = ); print "Probabilidad acumulada: "; chomp(my $prob = ); print "Masa central [<1] : "; chomp(my $masa = ); my $h = 2/($c-$a); print "\nLa altura es $h"; my $AP = ($b-$a)*$h/2; my $AO = 1-$AP; print "\nEl área pesimista es $AP \n"; print "El área optimista es $AO \n"; sleep 1; my ($mediana,$y); if ($b-$a > $c-$b){ $mediana = $a + sqrt( 4*($b-$a)/$h )/2; }else{ $mediana = $c - sqrt( 4*($c-$b)/$h )/2; } print "\nLa mediana es $mediana \n"; sleep 1; printf "\nEl punto %f deja a su izquierda %f y a su derecha %f \n",$x,&probab,(1-&probab); sleep 1; printf "\nEl punto %f deja a su izquierda el %f \n",&puntop,$prob; sleep 1; $prob=(1-$masa)/2; $x = &puntop; $prob=1-$prob; $y = &puntop; printf "\nEntre el punto %f y el punto %f esta el %f \n\n",$x,$y,$masa; my ($contrat,$despido,$p,$currantes,$ncontrat,$ingreso,$cdespido,$ccontrat)=0; my ($beneficio,$beneacu,$i,$j,$demanda,$demacu)=0; my @duracion; print "-" x 78; print "\n\nSobrecoste de contratación (tanto por 1): "; chomp ($contrat=); print "Sobrecoste de despido (tanto por 1): "; chomp ($despido=); print "Número de períodos (entero) : "; chomp ($p=); print "-" x 78; print "\n\nComienza la simulación \n"; $beneacu=$currantes=0; for ($i=1;$i<=$p;$i++){ print "\nIteraci\ón $i "; sleep 1; $prob=rand; $demanda=&puntop; print "\nLa demanda es de $demanda \n"; $demacu+=$demanda; $ncontrat=$cdespido=$ccontrat=0; print "¿Cuántos trabajadores quiere contratar (>0) o despedir (<0)? \n (signo) N = "; $ncontrat = ; chomp($ncontrat); if ($ncontrat eq "") { $ncontrat=0; } if ($ncontrat<0){ for ($j=$currantes;$j>$currantes+$ncontrat;$j--){ $cdespido += $despido*$duracion[$j]; $duracion[$j]=0; } } elsif ($ncontrat>0) { for ($j=$currantes+1;$j<=$currantes+$ncontrat;$j++){ $duracion[$j]=0; } $ccontrat = $contrat*$ncontrat; } $currantes += $ncontrat; if ($currantes>0) { $ingreso = 2*$demanda*($currantes/(1+$demanda)); print "\n\tEl ingreso bruto anual fue de $ingreso \n"; } else { $ingreso=0; print "\n\tNo hay ingresos por falta trabajadores \a\n"; $currantes=0; } print "\tEl coste salarial es $currantes \n"; print "\tEl coste de contratación es $ccontrat \n"; print "\tEl coste de despido es $cdespido \n"; $beneficio=$ingreso-$currantes-$ccontrat-$cdespido; print "\tSu BENEFICIO ANUAL es de $beneficio \n"; $beneacu+=$beneficio; print "\tEl BENEFICIO ACUMULADO es de $beneacu \n"; print "\ty le quedan ", $currantes," trabajadores con las siguientes antigüedades:\n"; for ($j=1;$j<=$currantes;$j++){ ++$duracion[$j]; print "\t",$j,") ",$duracion[$j]; if ($j%8==0) { print "\n"; } } print "\n\n"; } sleep 1; print "." x 78; print "\nEl juego ha finalizado. Usted ha ganado $beneacu \n"; print "lo cual supone un beneficio medio de ",$beneacu/$p,"\n"; print "sobre una demanda total de ",$demacu," y media ",$demacu/$p,"\n"; print "." x 78; print "\n\a\n"; sub probab{ if ($x < $b){ return $h * ($x-$a)**2 / (2*($b-$a)); }else{ return 1 - $h * ($c-$x)**2 / (2*($c-$b)); } } sub puntop{ if ($prob < $AP){ return $a + sqrt(2*($b-$a)*$prob/$h); }else{ return $c - sqrt(2*($c-$b)*(1-$prob)/$h); } } __END__