--- loncom/homework/caparesponse/caparesponse.pm 2005/12/06 10:01:57 1.184 +++ loncom/homework/caparesponse/caparesponse.pm 2006/02/06 23:02:50 1.187 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # caparesponse definition # -# $Id: caparesponse.pm,v 1.184 2005/12/06 10:01:57 albertel Exp $ +# $Id: caparesponse.pm,v 1.187 2006/02/06 23:02:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -191,17 +191,22 @@ sub start_numericalresponse { $safeeval); for (my $i=0; $i <= $#answers; $i++) { my $answer=$answers[$i]; - my $format; - if ($#formats > 0) { - $format=$formats[$i]; + if ( scalar(@$tagstack) + && $tagstack->[-1] ne 'numericalresponse') { + $answertxt.=$answer.','; } else { - $format=$formats[0]; + my $format; + if ($#formats > 0) { + $format=$formats[$i]; + } else { + $format=$formats[0]; + } + if ($unit=~/\$/) { $format="\$".$format; $unit=~s/\$//g; } + if ($unit=~/\,/) { $format="\,".$format; $unit=~s/\,//g; } + my $formatted=&format_number($answer,$format,$target, + $safeeval); + $answertxt.=$formatted.','; } - if ($unit=~/\$/) { $format="\$".$format; $unit=~s/\$//g; } - if ($unit=~/\,/) { $format="\,".$format; $unit=~s/\,//g; } - my $formatted=&format_number($answer,$format,$target, - $safeeval); - $answertxt.=$formatted.','; } chop $answertxt; if ($target eq 'web') { @@ -422,7 +427,8 @@ sub end_numericalresponse { if ($target eq 'answer') { $result.=&Apache::response::answer_header($tag); - if ($Apache::lonhomework::type eq 'exam') { + if ($tag eq 'numericalresponse' + && $Apache::lonhomework::type eq 'exam') { my ($bubble_values,undef,$correct) = &make_numerical_bubbles($partid, $id,$target,$parstack,$safeeval); $result.=&Apache::response::answer_part($tag,$correct); @@ -603,7 +609,7 @@ sub format_number { my $ans; if ($format eq '') { #What is the number? (integer,decimal,floating point) - if ($number=~/^(\d*\.?\d*)(E|e)(\d*)$/) { + if ($number=~/^(\d*\.?\d*)(E|e)[+\-]?(\d*)$/) { $format = '3e'; } elsif ($number=~/^(\d*)\.(\d*)$/) { $format = '4f';