[caracas-pm] Sugerencias sobre uso de arrays y hashes

Christian Sánchez cass_ba at cantv.net
Sat May 28 12:13:05 PDT 2005


Hola,
revise el script que enviaste y lo probé, ahora bien, no se si quizás
plantee mal el problema o es que entendi mal el mismo antes de
plantearlo, pero según lo que yo habia hecho antes, entendia que los
múltiplos de un número son todos aquellos que al dividirlo entre el el
residuo (módulo) es igual a 0, es por eso que yo tenia una línea que
verificaba esto:
if($num % $i == 0)
cuando corri tu script, los resultados que generó son distintos a los
que generaba el que yo hice, por ejemplo puse de número inicial el 100 y
de final el 110, estos son los resultados:
con el mio:
La suma de multiplos para 101 es  102. 
La suma de multiplos para 102 es  216. 
La suma de multiplos para 103 es  104. 
La suma de multiplos para 104 es  210. 
La suma de multiplos para 105 es  192. 
La suma de multiplos para 106 es  162. 
La suma de multiplos para 107 es  108. 
La suma de multiplos para 108 es  280. 
La suma de multiplos para 109 es  110. 
La suma de multiplos para 110 es  216. 
La suma total de los multiplos es 1917
El maximo es 280
El promedio es: 174.272727272727

con el tuyo:

 Multiplos de 100 suman 100
Multiplos de 101 suman 101
Multiplos de 102 suman 102
Multiplos de 103 suman 103
Multiplos de 104 suman 104
Multiplos de 105 suman 105
Multiplos de 106 suman 106
Multiplos de 107 suman 107
Multiplos de 108 suman 108
Multiplos de 109 suman 109
Multiplos de 110 suman 110
Total: 1155
Promedio: 105
La suma de multiplos de 110 es 110 y es maxima

Ahora no se que paso ahi, si quizás tu entendiste mal el problema o
quizás te falto algo, intente "descifrar" como funcionaba lo que
escribiste pero la verdad no entendi mucho .. (si, me toca leer más ;))

Saludos.

El Tue, 31 May 2005 08:11:48 +0530
Ernesto Hernández-Novich Escribio:

> #!/usr/bin/perl
> print "Inicial? "; $i = <STDIN>; chomp($i);
> print "Final?   "; $f = <STDIN>; chomp($f);
> my $ts = 0;
> my $mx = { m => undef, s => undef };
> for ($i..$f) {
>   print "Multiplos de ",$_," suman ";
>   my ($nm,$sm) = ($_,0);
>   $sm += $nm, $nm += abs($_) while $nm <= $f && $_;    (**)
>   $ts += $sm;
>   $mx = { m => $_, s => $sm } if !defined($mx->{s}) || $sm > $mx->{s};
>   print $sm,"\n";
> }
> print "Total: ",$ts,"\n";
> print "Promedio: ",$ts / ($f - $i + 1), "\n";
> print "La suma de multiplos de ",$mx->{m}," es ",$mx->{s}," y es
> maxima \n";
> 
> Este programa funciona con números negativos (pregúntale al profesor
> si su solución lo hace :-). En ese sentido, la línea clave es la
> marcada con (**).
> -- 

-- 
Christian Sánchez
Usuario GNU/Linux 234800
Maracay - Venezuela
ID Jabber: g013m at bulmalug.net
www.unplug.org.ve


More information about the caracas-pm mailing list