in reply to Re^3: Averages in bowling
in thread Averages in bowling

I fixed it up, and even used your advice to make the program more versatile (i.e. let the user define how many bowlers and games there are as opposed to making it just 4 and 3, respectively.)
In case you're interested, here's the entire {ugly} script.
{my @score; my @ave; my @han; my $i=0; my $j=0; my $k=0; my $l=0; my $o=0; my $teamhand;} print "How many bowlers are there?\n"; chomp(my $n=<>); $n-=1; print "\nHow many games did the bowlers play?\n"; chomp(my $m=<>); $m- +=1; for $i(0..$n){ for $j(0..$m){ $l=$i+1; $o=$j+1; print "\nPlease enter bowler $l s score for game $o: "; chomp($score[$i][$j]=<>); } } for $i(0..$n){ undef $k; for $j(0..$m){ $k+=$score[$i][$j]; } push @ave, int($k/($m)); } for $k(0..$n){ if($ave[$k]<=200){ $han[$k]=int((200-$ave[$k])*(.85)); } if($ave[$k]>=200){ $han[$k]=0; } } for $i(0..$n){$teamhand+=$han[$i];} for $i(0..$n){ $j=$i+1; print "\nBowler $j s Average: $ave[$i] Bowler $j s Handicap: $han +[$i]\n"; } print "\nThe team's handicap is: $teamhand\n";


Thanks again!

Replies are listed 'Best First'.
Re^5: Averages in bowling
by ikegami (Patriarch) on Mar 21, 2006 at 22:20 UTC

    Ugly is right. That's totally unreadable (read as "unmaintainable") because you use nonsense names.

    • Why not call $n $last_bowler?
    • Why not call $m $last_game?
    • Why not call $l $bowler_num?
    • Why not call $o $game_num?
    • Why not call $i $bowler_idx?
    • Why not call $j $game_idx?
    • Why not call $k $bowler_idx?
    • $k and $i have the same purpose, so why don't they have the same name?
    • Where is use strict;?
    • Where is use warnings;?
    • Why undef $k; instead of $k = 0;? It works, but it's weird, since you're relying on undef being equal to 0.
    • Why are your mys so far away from where the variable is used? for my $i (...) { ... } would limit the scope of $i to that loop.
      use strict; and use warnings; are just gone because the program wasn't being further tweaked.
      I removed them when I finished.
      And you're right, I should clean this up a bit.