martes, 8 de diciembre de 2015

Largo y corto

100 Nombres

Daniel y Cristina van a tener un bebé. Todavía no saben si será nene o nena pero tienen una lista con los posibles nombres. Como les cuesta decidirse por alguno quieren divertirse diseñando un programa de computadora que les diga el nombre más corto y el más largo.

Objetivo

Desarrolle un programa que tenga la siguiente entrada:
  • primero, el usuario ingresa un número entero n, que indica cuántas palabras ingresará a continuación;
  • después el usuario ingresa n palabras.

La salida del programa deben ser la palabra más larga y la más corta que ingresó el usuario.

Por ejemplo, si el usuario ingresa:

5
Diego
Andrea
Marcelino
Azul
Ana

la salida debe ser:

Mas larga: Marcelino
Mas corta: Ana

Solución en Perl


#!/usr/bin/perl
use strict;
use warnings;

my $mas_corto= '';
my $mas_largo= '';
my $size_corto= 99;
my $size_largo= 0;
print "Por favor, ingrese la cantidad de nombres: ";
my $n = <stdin>;
chomp($n);
foreach my $i (1..$n){
  print "Nombre $i?: ";
  my $nombre = <stdin>;
  chomp($nombre);
  if (length($nombre) > $size_largo){ $mas_largo= $nombre; $size_largo= length($nombre); }
  if (length($nombre) < $size_corto){ $mas_corto= $nombre; $size_corto= length($nombre); }
}
print "Gracias por los valores ingresados \n";
print "El más corto: $mas_corto \n";
print "El más largo: $mas_largo \n";


Contador de signos

Signos del clima

Ramón está preocupado por el cambio climático y decide empezar a revisar cifras que tengan que ver con el clima y su evolución. Para empezar toma un listado de temperaturas alrededor del mundo y quiere contar las que están sobre cero y las que están bajo cero. Como el trabajo es muy repetitivo y propenso a errores se propone automatizarlo con un programa de computadora.

Objetivo

Desarrolle un programa que pida al usuario que ingrese varios números, uno por uno. El ingreso de números termina cuando el usuario ingresa el 0, entonces el programa debe entregar como salida la cantidad de números positivos y negativos que ingresó el usuario.

Por ejemplo, si el usuario ingresa los números 37, —4, —22, —7, 17, —1 y 0, el programa debe entregar la salida:

Positivos: 2
Negativos: 4


Solución en Perl

#!/usr/bin/perl
use strict;
use warnings;

my $positivos= 0;
my $negativos= 0;
print "Por favor, ingrese un valor: ";
my $temperatura = <stdin>;
chomp($temperatura);
while($temperatura){
  if ($temperatura > 0){ $positivos++; }
  if ($temperatura < 0){ $negativos++; }
  print "Por favor, ingrese un valor: ";
  $temperatura = <stdin>;
  chomp($temperatura);
}
print "Gracias por los valores ingresados \n";
print "Positivos: $positivos \n";
print "Negativos: $negativos \n";

lunes, 30 de noviembre de 2015

Tablas de multiplicar

Pamela aprende a multiplicar

Pamela llega de la escuela contenta porque aprendió que la multiplicación le ahorra tiempo cuando tiene que sumar varias veces el mismo número. Se lo explica a su hermano mayor, David, y le pregunta dónde puede encontrar las tablas de multiplicar. David lo piensa dos veces y se le ocurre que es una buena oportunidad para llamar a su primo Vladimir. Vladimir llega con su netbook y su lenguaje de programación favorito y juntos planean cómo imprimir las tablas de multiplicar.

Objetivo

Desarrolle un programa que imprima la tabla de multiplicar del número elegido.
Por ejemplo, si se elige el número 9, la salida del programa debe ser:

9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
9 x 10 = 90

Solución en Perl


#!/usr/bin/perl
use strict;
use warnings;

print "Ingresar el factor: ";
my $factor = <stdin>;
chomp($factor);
if (! $factor){ die; }

foreach my $i (1..10){
  my $producto= $i*$factor;
  print "$factor x $i = $producto \n";
}

lunes, 23 de noviembre de 2015

Resolver una ecuación cuadrática

Ecuación cuadrática


Desarrolle un programa que resuelva la ecuación cuadrática ax2+bx+c=0.

La entrada del programa serán a, b y c. La salida serán las soluciones reales de la ecuación.

Por ejemplo, si la entrada son los valores 1, 2 y —8, la salida del programa debe ser:

-4.0
2.0

Si la entrada son los valores 4, 4 y 1, la salida del programa debe ser:

-0.5

Si la entrada son los valores 3, —3 y 1, la salida del programa debe ser:

no hay soluciones reales

Solución


Resolveremos la ecuación reemplazando a, b y c en la fórmula cuadrática:
x= (-b ± √(b2- 4ac) )/ 2a

El discriminante de la fórmula determina cuántas soluciones reales hay, es decir la cantidad de valores de x que satisfacen la ecuación. Si el discriminante es cero hay una solución, si es mayor a 0 hay dos soluciones y si es negativo no hay soluciones reales. El discriminante se calcula como Δ= b2 - 4ac

Cuando el discriminante es cero, la fórmula cuadrática  que queda es x= -b/2a
Cuando el discriminante es mayor a cero nos quedan dos soluciones:
x= (-b + √Δ) / 2a
x= (-b - √Δ) / 2a

Solución en Javascript


function cuadratica(){
  var a;
  var b;
  var c;

  a= prompt( 'Ingresar el valor a: ', 1 );
  // si a es cero o vacio no es una función cuadrática
  if (! (a*1)) return;

  b= prompt( 'Ingresar el valor b: ', 1 );
  c= prompt( 'Ingresar el valor c: ', 1 );

  var discriminante= b*b - 4*a*c;
  if (discriminante < 0){ 
    alert( 'No hay soluciones reales' );
    return;
  }

  if (discriminante){ 
    alert( 'Hay dos soluciones:' ); 
    var solucion = (-b + Math.sqrt(discriminante))/(2*a);
    alert( solucion ); 
    var solucion2 = (-b - Math.sqrt(discriminante))/(2*a);
    alert( solucion2 ); 
  }else{
    var solucion = -b/(2*a);
    alert( 'La unica solucion es ' + solucion );
  }
  return;
}
cuadratica();
cuadratica();
cuadratica();

Solución en Perl


#!/usr/bin/perl
use strict;
use warnings;

print "Ingresar el valor a: ";
my $a = <stdin>;
chomp($a);
if (! $a){ die; }

print "Ingresar el valor b: ";
my $b = <stdin>;
chomp($b);

print "Ingresar el valor c: ";
my $c = <stdin>;
chomp($c);

my $discriminante= $b*$b - 4*$a*$c;
if ($discriminante < 0){ 
  print "No hay soluciones reales \n";
  exit;
}

if ($discriminante){ 
  print "Hay dos soluciones: \n"; 
  my $solucion = (-$b + sqrt($discriminante))/(2*$a);
  print $solucion."\n"; 
  my $solucion2 = (-$b - sqrt($discriminante))/(2*$a);
  print $solucion2."\n"; 
}else{
  my $solucion = -$b/(2*$a);
  print "La unica solucion es $solucion \n";
}