--- loncom/homework/default_homework.lcpm 2000/11/21 18:36:37 1.10 +++ loncom/homework/default_homework.lcpm 2000/11/29 00:51:57 1.12 @@ -9,6 +9,7 @@ sub caparesponse_check { my $type=''; #done my $tol_type=''; # gets it's value from whether tol has a % or not done my $tol=''; #done + my $sig=''; my $sig_lbound=''; my $sig_ubound=''; my $ans_fmt=''; @@ -16,9 +17,8 @@ sub caparesponse_check { my $calc=''; my ($response,$expr)=@_; - ($answer,$type,$tol,$sig_lbound,$sig_ubound,$ans_fmt, - $units,$calc) = eval $expr.'return $answer,$type,$tol,$sig_lbound,$sig_ubound,$ans_fmt,$units,$calc'; - + ($answer,$type,$tol,$sig,$ans_fmt, + $units,$calc) = eval $expr.';return $answer,$type,$tol,$sig,$ans_fmt,$units,$calc'; #type's definitons come from capaParser.h if ($type eq '' ) { if ( $answer eq ($answer *1.0)) { $type = 2; @@ -37,16 +37,23 @@ sub caparesponse_check { $tol_type=1; #TOL_ABSOLUTE } else { if ($tol =~ /%$/) { - $tol=chop($tol); + chop $tol; $tol_type=2; #TOL_PERCENTAGE } else { $tol_type=1; #TOL_ABSOLUTE } } + + if ($sig eq '') { + $sig_lbound = 0; #SIG_LB_DEFAULT + $sig_ubound =15; #SIG_UB_DEFAULT + } else { + ($sig_lbound,$sig_ubound) = split /,/,$sig; + } my $result = &caparesponse_capa_check_answer($response,$answer,$type, $tol_type,$tol, $sig_lbound,$sig_ubound, - $ans_fmt, $units,$calc); + $ans_fmt,$units,$calc); if ($result == '1') { $result='EXACT_ANS'; } elsif ($result == '2') { $result='APPROX_ANS'; } @@ -62,37 +69,31 @@ sub caparesponse_check { elsif ($result =='12') { $result='WANTED_NUMERIC'; } else {$result = "ERROR: Unknown Result: $result";} - return "$result:$tol:$tol_type"; + return "$result:$error:$answer:$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units"; } sub tex { if ( $external::target eq "tex" ) { - #$SCRIPT_RESULT.=@_[0]; return @_[0]; } else { - #$SCRIPT_RESULT.=@_[1]; return @_[1]; } } sub web { if ( $external::target eq "tex" ) { - #$SCRIPT_RESULT.=@_[1]; return @_[1]; } else { if ( $external::target eq "web") { - #$SCRIPT_RESULT.=@_[0]; return @_[0]; } else { - #$SCRIPT_RESULT.=@_[2]; return @_[2]; } } } sub problem { - $SCRIPT_RESULT.='1'; - return ''; + return '1'; } sub hinton { @@ -113,7 +114,6 @@ sub asin { atan2($_[0], sqrt(1- $_[0] * sub html { if ( $external::target eq "web" ) { - #$SCRIPT_RESULT.=@_[0]; return @_[0]; } } @@ -125,8 +125,7 @@ sub floor {return int($_[0]); } sub format { my ($value,$fmt)=@_; - $SCRIPT_RESULT.=sprintf('%.'.$fmt,$value); - return $SCRIPT_RESULT; + return sprintf('%.'.$fmt,$value); } sub map {