in reply to Re^3: why is my for loop using modulo giving me a weird output
in thread why is my for loop using modulo giving me a weird output

totally mistaken on modulo.my bad..

I get it and thank you!

I guess , what I wanted to get out of this was the quotient NOT the remainder

so if I divide the number 20 by 5, I want the quotient 4. ok, let me try this again

then ,next step, is to write a program to find the smallest number that are evenly divided by all the given max_range numbers. ie: like 0-10.

use strict; use warnings; use integer; use constant number => 5; my %result; for ( my $i=0; $i<=20 ;$i++){ #my ($quo, $rem)= ($i/5, $i%5); #need to understand modulo #print "this is quotient",$quo,"when this is divident $i \n"; #print "this is remainder",$rem,"\n"; if ($i%5==0 && $i!=0){ print "this is the quotient",$i/5,"\n"; print "this is the divident",$i,"\n"; } }

Replies are listed 'Best First'.
Re^5: why is my for loop using modulo giving me a weird output
by marinersk (Priest) on Jun 28, 2015 at 08:50 UTC

    I think you might benefit from the use of intin order to chop off the fractional component for $quo.

      I used "use integer;" wouldn't this be correct? or should I add the int while doing the operation $i%5.

      use strict; use warnings; use integer; use constant number => 5;

      if I have to add this here, what situation am I avoiding?

      I don't quite understand this

      to chop off the fractional component for $quo
      print "this is the quotient",int $i/5,"\n";

        re "use integer" tells Perl "to use integer arithmetic instead of floating point" (see http://perldoc.perl.org/integer.html ) -- it's a pragma whereas marinersk's reference is to the function int, which you use correctly in your second code section (tho the output would look better if you included a space before the trailing quote on the text).

        UPDATE: s/correctly/ correctly assuming a value for $i greater than 5. If ($i <5) you'll get zero because int removes fractional the fractional part of a value 0.nnnn / which will look a lot like 5%5. (see -- on your own CLI -- perldoc -f int).

        See for yourself:

        #!/usr/bin/perl use strict; my $i = 1; my ($quo1, $rem1) = ($i/5, $i%5); #need to understand modulo print "Without int: Quotient = [$quo1], Remainder = [$rem1]\n"; my ($quo2, $rem2) = (int($i/5), $i%5); #modified to use int print " With int: Quotient = [$quo2], Remainder = [$rem2]\n"; exit; __END__

        Results:

        D:\PerlMonks>modulo1.pl Without int: Quotient = [0.2], Remainder = [1] With int: Quotient = [0], Remainder = [1] D:\PerlMonks>