version 1.173, 2005/07/11 18:24:12
|
version 1.177, 2005/08/02 19:01:18
|
Line 330 sub end_numericalresponse {
|
Line 330 sub end_numericalresponse {
|
if ($target eq 'answer') { |
if ($target eq 'answer') { |
$result.=&Apache::response::answer_header($tag); |
$result.=&Apache::response::answer_header($tag); |
} |
} |
|
my ($sigline,$tolline); |
for(my $i=0;$i<=$#answers;$i++) { |
for(my $i=0;$i<=$#answers;$i++) { |
my $ans=$answers[$i]; |
my $ans=$answers[$i]; |
my $fmt=$formats[0]; |
my $fmt=$formats[0]; |
Line 352 sub end_numericalresponse {
|
Line 353 sub end_numericalresponse {
|
# $low =&format_number($low,$fmt,$target,$safeeval); |
# $low =&format_number($low,$fmt,$target,$safeeval); |
#} |
#} |
} |
} |
my $response=$ans; |
|
if ($unit) { |
|
my $cleanunit=$unit; |
|
$cleanunit=~s/\$\,//g; |
|
$response.=" $cleanunit"; |
|
} |
|
if ($target eq 'answer') { |
if ($target eq 'answer') { |
if ($high && $tag eq 'numericalresponse') { $ans.=' ['.$low.','.$high.']'; } |
if ($high && $tag eq 'numericalresponse') { |
|
$ans.=' ['.$low.','.$high.']'; |
|
$tolline .= "[$low, $high]"; |
|
} |
if (defined($sighigh) && $tag eq 'numericalresponse') { |
if (defined($sighigh) && $tag eq 'numericalresponse') { |
if ($env{'form.answer_output_mode'} eq 'tex') { |
if ($env{'form.answer_output_mode'} eq 'tex') { |
$ans.= " Sig $siglow - $sighigh"; |
$ans.= " Sig $siglow - $sighigh"; |
} else { |
} else { |
$ans.= " Sig <i>$siglow - $sighigh</i>"; |
$ans.= " Sig <i>$siglow - $sighigh</i>"; |
|
$sigline .= "[$siglow, $sighigh]"; |
} |
} |
} |
} |
$result.=&Apache::response::answer_part($tag,$ans); |
$result.=&Apache::response::answer_part($tag,$ans); |
Line 378 sub end_numericalresponse {
|
Line 377 sub end_numericalresponse {
|
push (@{ $Apache::lonhomework::analyze{"$part_id.format"} }, $fmt); |
push (@{ $Apache::lonhomework::analyze{"$part_id.format"} }, $fmt); |
} |
} |
} |
} |
my ($awards,$msgs)=&check_submission($response,$partid,$id,$tag, |
} |
$parstack,$safeeval); |
|
my ($ad,$msg) =&Apache::inputtags::finalizeawards($awards,$msgs); |
my @fmt_ans; |
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |
for(my $i=0;$i<=$#answers;$i++) { |
|
my $ans=$answers[$i]; |
|
my $fmt=$formats[0]; |
|
if (@formats && $#formats) {$fmt=$formats[$i];} |
|
if ($fmt && $tag eq 'numericalresponse') { |
|
$fmt=~s/e/E/g; |
|
if ($unit=~/\$/) { $fmt="\$".$fmt; $unit=~s/\$//g; } |
|
if ($unit=~/\,/) { $fmt="\,".$fmt; $unit=~s/\,//g; } |
|
$ans = &format_number($ans,$fmt,$target,$safeeval); |
|
if ($fmt=~/\$/ && $unit!~/\$/) { $ans=~s/\$//; } |
|
} |
|
push(@fmt_ans,$ans); |
|
} |
|
my $response=join(', ',@fmt_ans); |
|
my $hideunit=&Apache::lonnet::EXT('resource.'.$partid.'_'. |
|
$id.'.turnoffunit'); |
|
if ($unit ne '' && |
|
! ($Apache::lonhomework::type eq 'exam' || |
|
lc($hideunit) eq "yes") ) { |
|
my $cleanunit=$unit; |
|
$cleanunit=~s/\$\,//g; |
|
$response.=" $cleanunit"; |
|
} |
|
|
|
my ($awards,$msgs)=&check_submission($response,$partid,$id,$tag, |
|
$parstack,$safeeval); |
|
my ($ad,$msg) =&Apache::inputtags::finalizeawards($awards,$msgs); |
|
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |
|
my $error; |
|
if ($tag eq 'formularesponse') { |
|
$error=&mt('Computer\'s answer is incorrect ("[_1]").'); |
|
} else { |
# answer failed check if it is sig figs that is failing |
# answer failed check if it is sig figs that is failing |
my ($awards,$msgs)=&check_submission($response,$partid,$id, |
my ($awards,$msgs)=&check_submission($response,$partid,$id, |
$tag,$parstack,$safeeval, |
$tag,$parstack, |
1); |
$safeeval,1); |
my ($ad,$msg)=&Apache::inputtags::finalizeawards($awards, |
($ad,$msg)=&Apache::inputtags::finalizeawards($awards, |
$msgs); |
$msgs); |
|
|
my $error; |
if ($sigline ne '') { |
if ($siglow ne '' && $sighigh ne '') { |
$error=&mt('Computer\'s answer is incorrect ("[_1]"). It is likely that the tolerance range [_2] or significant figures [_3] need to be adjusted.',$response,$tolline,$sigline); |
$error=&mt('Computer\'s answer is incorrect ("[_1]"). It is likely that the tolerance range ("[_2]" to "[_3]") or significant figures ("[_4]" to "[_5]") need to be adjusted.',$response,$low,$high,$siglow,$sighigh); |
|
} else { |
|
$error=&mt('Computer\'s answer is incorrect ("[_1]"). It is likely that the tolerance range ("[_2]" to "[_3]") needs to be adjusted.',$response,$low,$high); |
|
} |
|
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |
|
&Apache::lonxml::error($error); |
|
} else { |
} else { |
&Apache::lonxml::warning($error); |
$error=&mt('Computer\'s answer is incorrect ("[_1]"). It is likely that the tolerance range [_1] needs to be adjusted.',$response,$tolline); |
} |
} |
} |
} |
|
if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') { |
|
&Apache::lonxml::error($error); |
|
} else { |
|
&Apache::lonxml::warning($error); |
|
} |
} |
} |
|
|
if (defined($unit) and ($unit ne '') and |
if (defined($unit) and ($unit ne '') and |
$tag eq 'numericalresponse') { |
$tag eq 'numericalresponse') { |
if ($target eq 'answer') { |
if ($target eq 'answer') { |