version 1.36, 2001/08/23 16:44:22
|
version 1.39, 2001/10/29 21:15:44
|
Line 7
|
Line 7
|
# 05/31/2001 H. K. Ng |
# 05/31/2001 H. K. Ng |
# |
# |
#init some globals |
#init some globals |
$RANDOMINIT=0; |
$hidden::RANDOMINIT=0; |
$pi=atan2(1,1)*4; |
$pi=atan2(1,1)*4; |
$rad2deg=180.0/$pi; |
$rad2deg=180.0/$pi; |
$deg2rad=$pi/180.0; |
$deg2rad=$pi/180.0; |
Line 15 $deg2rad=$pi/180.0;
|
Line 15 $deg2rad=$pi/180.0;
|
sub caparesponse_check { |
sub caparesponse_check { |
#not properly used yet: calc |
#not properly used yet: calc |
#not to be used: $ans_fmt |
#not to be used: $ans_fmt |
my ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc) = |
my ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) = |
eval $_[1].';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc);'; |
eval $_[1]. |
|
';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples);'; |
|
|
my $tol_type=''; # gets it's value from whether tol has a % or not done |
my $tol_type=''; # gets it's value from whether tol has a % or not done |
my $sig_lbound=''; #done |
my $sig_lbound=''; #done |
Line 47 sub caparesponse_check {
|
Line 48 sub caparesponse_check {
|
} else { return "ERROR: Unknown type of answer: $type" } |
} else { return "ERROR: Unknown type of answer: $type" } |
} |
} |
|
|
|
my $points; |
|
my $id_list; |
|
#formula type setup the sample points |
|
if ($type eq '8') { |
|
($id_list,$points)=split(/@/,$samples); |
|
$message.="Found :$points: points<br />"; |
|
} |
if ($tol eq '') { |
if ($tol eq '') { |
$tol=0.0; |
$tol=0.0; |
$tol_type=1; #TOL_ABSOLUTE |
$tol_type=1; #TOL_ABSOLUTE |
Line 68 sub caparesponse_check {
|
Line 76 sub caparesponse_check {
|
my $result = &caparesponse_capa_check_answer($response,$answer,$type, |
my $result = &caparesponse_capa_check_answer($response,$answer,$type, |
$tol_type,$tol, |
$tol_type,$tol, |
$sig_lbound,$sig_ubound, |
$sig_lbound,$sig_ubound, |
$ans_fmt,$unit,$calc); |
$ans_fmt,$unit,$calc,$id_list, |
|
$points,$external::randomseed); |
|
|
if ($result == '1') { $result='EXACT_ANS'; } |
if ($result == '1') { $result='EXACT_ANS'; } |
elsif ($result == '2') { $result='APPROX_ANS'; } |
elsif ($result == '2') { $result='APPROX_ANS'; } |
Line 87 sub caparesponse_check {
|
Line 96 sub caparesponse_check {
|
return "$result:<br />Error $error:<br />Answer $answer:<br />Response $response:<br /> type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|<br />$message$expr"; |
return "$result:<br />Error $error:<br />Answer $answer:<br />Response $response:<br /> type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|<br />$message$expr"; |
} |
} |
|
|
sub caparesponse_check_list { |
sub get_array_args { |
my ($response,$expr)=@_; |
my ($expr,$arg)=@_; |
# do these first, because who knows what varname the instructor might have used |
# do these first, because who knows what varname the instructor might have used |
# but it probably isn't $CAPARESPONSE_CHECK_LIST_answer |
# but it probably isn't $CAPARESPONSE_CHECK_LIST_answer |
my $CAPARESPONSE_CHECK_LIST_answer = eval $expr.';return $answer'; |
my $CAPARESPONSE_CHECK_LIST_answer = eval $expr.';return $'.$arg; #' |
my (@list) = eval $CAPARESPONSE_CHECK_LIST_answer; |
if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) { |
|
my (@list) = eval $CAPARESPONSE_CHECK_LIST_answer; |
|
} |
my $result=''; |
my $result=''; |
$result.="error:$@:<br />"; |
$result.="error:$@:<br />"; |
# if the eval fails just use what is in the answer exactly |
# if the eval fails just use what is in the answer exactly |
Line 100 sub caparesponse_check_list {
|
Line 111 sub caparesponse_check_list {
|
$result.="list zero is undefined<br />"; |
$result.="list zero is undefined<br />"; |
$list[0]=$CAPARESPONSE_CHECK_LIST_answer; |
$list[0]=$CAPARESPONSE_CHECK_LIST_answer; |
} |
} |
|
return @list; |
|
} |
|
|
|
sub caparesponse_check_list { |
|
my ($response,$expr)=@_; |
|
my (@list) = &get_array_args($expr,'answer'); |
my $aresult=''; |
my $aresult=''; |
my $current_answer; |
my $current_answer; |
$result.="Got response :$CAPARESPONSE_CHECK_LIST_answer:$list[0]:<br />"; |
my $answers=join(':',@list); |
|
$result.="Got response :$answers:<br />"; |
my @responselist; |
my @responselist; |
my $type =eval $expr.';return $answer;'; |
my $type =eval $expr.';return $answer;'; |
if ($type ne '' && $#list > 0) { |
if ($type ne '' && $#list > 0) { |
Line 185 sub hinton {
|
Line 203 sub hinton {
|
|
|
sub random { |
sub random { |
my ($start,$end,$step)=@_; |
my ($start,$end,$step)=@_; |
if ( ! $RANDOMINIT ) { srand($external::randomseed); $RANDOMINIT=1; } |
if ( ! $hidden::RANDOMINIT ) { |
|
srand($external::randomseed); |
|
$hidden::RANDOMINIT=1; |
|
} |
my $num=1+int(($end-$start)/$step); |
my $num=1+int(($end-$start)/$step); |
my $result=$start + int(rand() * $num)*$step; |
my $result=$start + int(rand() * $num)*$step; |
return $result; |
return $result; |