--- loncom/homework/default_homework.lcpm 2004/03/19 22:02:03 1.75 +++ loncom/homework/default_homework.lcpm 2004/05/17 21:15:56 1.79 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.75 2004/03/19 22:02:03 albertel Exp $ +# $Id: default_homework.lcpm,v 1.79 2004/05/17 21:15:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,12 +26,7 @@ # http://www.lon-capa.org/ # # -# Guy Albertelli -# -# 05/25/2001 H. K. Ng -# 05/31/2001 H. K. Ng -# 12/21/2001 Matthew -# + #init some globals $hidden::RANDOMINIT=0; $pi=atan2(1,1)*4; @@ -68,7 +63,12 @@ sub caparesponse_check { } else { $message .="no ws in :$response:\n"; } - + if ($type eq 'cs' || $type eq 'ci' || $type eq 'mc') { + #for string answers make surec all places spaces occur, there is + #really only 1 space, in both the answer and the response + $answer=~s/ +/ /g; + $response=~s/ +/ /g; + } if (length($response) > 500) { return "TOO_LONG: Answer too long"; } if ($type eq '' ) { @@ -135,7 +135,11 @@ sub caparesponse_check { elsif ($result == '9') { $result='ANS_CNT_NOT_MATCH'; } elsif ($result =='10') { $result='SUB_RECORDED'; } elsif ($result =='11') { $result='BAD_FORMULA'; } - elsif ($result =='12') { $result='WANTED_NUMERIC'; } + elsif ($result =='13') { $result='UNIT_INVALID_INSTRUCTOR'; } + elsif ($result =='141') { $result='UNIT_INVALID_STUDENT'; } + elsif ($result =='142') { $result='UNIT_INVALID_STUDENT'; } + elsif ($result =='143') { $result='UNIT_INVALID_STUDENT'; } + elsif ($result =='15') { $result='UNIT_IRRECONCIBLE'; } else {$result = "ERROR: Unknown Result:$result:$@:";} return ("$result:\nRetError $reterror:\nError $error:\nAnswer $answer:\nResponse $response:\n type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|\n$message",$reterror); @@ -480,6 +484,7 @@ sub format { if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } $fmt=~s/e/E/g; my $result=sprintf('%.'.$fmt,$value); + if ($fmt eq '0f') { $result .='.'; } $result=~s/(E[+-]*)0/$1/; if ($dollarmode) {$result=&dollarmode($result);} return $result; @@ -497,7 +502,7 @@ sub chemparse { if ($token eq '<=>') { if ($external::target eq 'web' && &EXT('request.browser.unicode')) { - $formula .= '⇔ '; + $formula .= '⇌ '; } else { $formula .= &web('<=> ','\ensuremath{\rightleftharpoons} ', '<=$gt; '); @@ -509,7 +514,7 @@ sub chemparse { my $molecule = $2; # subscripts - $molecule =~ s|(?<=[a-zA-Z\[\s])(\d+)|$1|g; + $molecule =~ s|(?<=[a-zA-Z\)\]\s])(\d+)|$1|g; # superscripts $molecule =~ s|\^(\d*[+\-]*)|$1|g; # strip whitespace @@ -532,6 +537,7 @@ sub prettyprint { if ($fmt =~ /chem/i) { return(&chemparse($value)); } if ($fmt =~ /^\$(.*)/) { $fmt=$1; $dollarmode=1; } if ($fmt) { $value=sprintf('%.'.$fmt,$value); } + if ($fmt eq '0f') { $value .='.'; } if ($value =~ /([0-9\.\-\+]+)E([0-9\-\+]+)/i ) { my $frac=$1; if ($dollarmode) { $frac=&dollarformat($frac); }