--- loncom/homework/caparesponse/caparesponse.pm 2018/09/13 17:00:05 1.259 +++ loncom/homework/caparesponse/caparesponse.pm 2020/12/04 22:19:19 1.261 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.259 2018/09/13 17:00:05 raeburn Exp $ +# $Id: caparesponse.pm,v 1.261 2020/12/04 22:19:19 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -760,7 +760,11 @@ sub end_numericalresponse { my $ans=$answers[$i]; my $fmt=$formats[0]; if (@formats && $#formats) {$fmt=$formats[$i];} - foreach my $element (@$ans) { + my @answers; + if (ref($ans) eq 'ARRAY') { + @answers = (@{$ans}); + } + foreach my $element (@answers) { if ($fmt && $tag eq 'numericalresponse') { $fmt=~s/e/E/g; if ($unit=~/\$/) { $fmt="\$".$fmt; $unit=~s/\$//g; } @@ -770,7 +774,7 @@ sub end_numericalresponse { if ($fmt=~/\$/ && !$needsdollar) { $element=~s/\$//; } } } - push(@fmt_ans,join(',',@$ans)); + push(@fmt_ans,join(',',@answers)); } my $response=\@fmt_ans; @@ -1061,7 +1065,12 @@ sub make_numerical_bubbles { &Math::Random::random_uniform_integer(1,1,10); } for ($ind=0;$ind<$number_of_bubbles;$ind++) { - $bubble_values[$ind] = $answerfactor*($factor**($power-$powers[$#powers-$ind])); + my $exponent = $power-$powers[$#powers-$ind]; + if ($exponent == 0) { + $bubble_values[$ind] = $answerfactor; + } else { + $bubble_values[$ind] = $answerfactor*($factor**$exponent); + } $bubble_display[$ind] = &format_number($bubble_values[$ind], $format,$target,$safeeval); }