version 1.252, 2012/03/05 11:50:39
|
version 1.253, 2012/12/14 11:17:09
|
Line 446 sub check_submission {
|
Line 446 sub check_submission {
|
} |
} |
|
|
my (@final_awards,@final_msgs,@names); |
my (@final_awards,@final_msgs,@names); |
|
# $Apache::lonxml::debug = 1; # DEBUG |
foreach my $name (keys(%answer)) { |
foreach my $name (keys(%answer)) { |
&Apache::lonxml::debug(" doing $name with ".join(':',@{ $answer{$name}{'answers'} })); |
&Apache::lonxml::debug(" doing $name with ".join(':',@{ $answer{$name}{'answers'} })); |
|
|
Line 456 sub check_submission {
|
Line 457 sub check_submission {
|
my ($result,@msgs) = |
my ($result,@msgs) = |
&Apache::run::run("&caparesponse_check_list()",$safeeval); |
&Apache::run::run("&caparesponse_check_list()",$safeeval); |
&Apache::lonxml::debug("checking $name $result with $response took ".&Time::HiRes::tv_interval($t0)); |
&Apache::lonxml::debug("checking $name $result with $response took ".&Time::HiRes::tv_interval($t0)); |
|
|
&Apache::lonxml::debug('msgs are '.join(':',@msgs)); |
&Apache::lonxml::debug('msgs are '.join(':',@msgs)); |
my ($awards)=split(/:/,$result); |
my ($awards)=split(/:/,$result); |
my @awards= split(/,/,$awards); |
my @awards= split(/,/,$awards); |
Line 465 sub check_submission {
|
Line 465 sub check_submission {
|
push(@final_msgs,$msg); |
push(@final_msgs,$msg); |
push(@names,$name); |
push(@names,$name); |
} |
} |
|
# $Apache::lonxml::debug = 0; # DEBUG |
my ($ad, $msg, $name) = &Apache::inputtags::finalizeawards(\@final_awards, |
my ($ad, $msg, $name) = &Apache::inputtags::finalizeawards(\@final_awards, |
\@final_msgs, |
\@final_msgs, |
\@names,1); |
\@names,1); |
Line 784 sub end_numericalresponse {
|
Line 785 sub end_numericalresponse {
|
$ans.=" $cleanunit"; |
$ans.=" $cleanunit"; |
} |
} |
} |
} |
|
# |
|
# The computer's response must be cast in a form that |
|
# ensures it has sufficient significant figures. |
|
# the only way to do this is to sprintf it into scientific notation |
|
# due to the ambiguity of trailing zeros. |
|
# See Bug 6577 |
|
# |
|
my ($sigMax, $sigmin) = &get_sigrange($Apache::inputtags::params{'sig'}); |
|
my $sigfigs = $sigMax-1; |
|
|
|
for (my $i = 0; $i < scalar @$response; $i++) { |
|
$response->[$i] = sprintf('%.' . $sigfigs . 'e', $response->[$i]); |
|
} |
my ($ad,$msg)=&check_submission($response,$partid,$id,$tag, |
my ($ad,$msg)=&check_submission($response,$partid,$id,$tag, |
$parstack,$safeeval); |
$parstack,$safeeval); |
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |