--- loncom/homework/default_homework.lcpm 2001/01/16 20:15:40 1.15 +++ loncom/homework/default_homework.lcpm 2001/05/08 14:57:12 1.19 @@ -2,18 +2,20 @@ # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # # +#init some globals $RANDOMINIT=0; +$pi=atan2(1,1)*4; sub caparesponse_check { my $answer=''; #done 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 $sig=''; #done lowerbnd,upperbnd + my $sig_lbound=''; #done + my $sig_ubound=''; #done my $ans_fmt=''; - my $units=''; + my $units=''; #done my $calc=''; my ($response,$expr)=@_; @@ -69,7 +71,7 @@ sub caparesponse_check { elsif ($result =='12') { $result='WANTED_NUMERIC'; } else {$result = "ERROR: Unknown Result:$result:$@:";} - return "$result:
Error $error:
Answer $answer:
Response $response:
$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units
"; + return "$result:
Error $error:
Answer $answer:
Response $response:
$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units
"; } sub caparesponse_check_list { @@ -81,24 +83,29 @@ sub caparesponse_check_list { my (@list) = eval $answer; my (@responselist)=split /,/,$response; my $unit=''; - $result.="Final response :$responselist['-1']:
"; + $result.="Final response :$responselist['-1']:
"; if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) { $responselist['-1']=$1; $unit=$2; } - $result.="Final response :$responselist['-1']:
"; + $result.="Final response :$responselist['-1']:
"; $unit=~s/\s//; my $i=0; my $awards=''; for ($i=0; $i<@list;$i++) { - $aresult=&caparesponse_check($responselist[$i]." $unit", - $expr.';my $answer='.$list[$i].';'); + if ($unit eq '') { + $aresult=&caparesponse_check($responselist[$i], + $expr.';my $answer='.$list[$i].';'); + } else { + $aresult=&caparesponse_check($responselist[$i]." $unit", + $expr.';my $answer='.$list[$i].';'); + } my ($temp)=split /:/, $aresult; $awards.="$temp,"; $result.=$aresult; } chop $awards; - return "$awards:
$result"; + return "$awards:
$result"; } sub tex { @@ -138,8 +145,10 @@ sub random { } sub tan { sin($_[0]) / cos($_[0]) } +sub atan { atan2($_[0], 1); } sub acos { atan2(sqrt(1 - $_[0] * $_[0]), $_[0] ); } sub asin { atan2($_[0], sqrt(1- $_[0] * $_[0]) ); } +sub log10 { log($_[0])/log(10); } sub html { if ( $external::target eq "web" ) {