[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