--- loncom/homework/default_homework.lcpm 2001/08/22 22:21:46 1.35
+++ loncom/homework/default_homework.lcpm 2001/10/01 20:15:30 1.37
@@ -13,21 +13,17 @@ $rad2deg=180.0/$pi;
$deg2rad=$pi/180.0;
sub caparesponse_check {
- my $answer=''; #done
- my $type=''; #done
+ #not properly used yet: calc
+ #not to be used: $ans_fmt
+ my ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc) =
+ eval $_[1].';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc);';
+
my $tol_type=''; # gets it's value from whether tol has a % or not done
- my $tol=''; #done
- my $sig=''; #done lowerbnd,upperbnd
my $sig_lbound=''; #done
my $sig_ubound=''; #done
- my $ans_fmt='';
- my $unit=''; #done
- my $calc='';
my ($response,$expr)=@_;
- ($answer,$type,$tol,$sig,$ans_fmt,
- $unit,$calc) = eval $expr.';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc);';
#type's definitons come from capaParser.h
my $message='';
#remove leading and trailing whitespace
@@ -88,14 +84,14 @@ sub caparesponse_check {
elsif ($result =='12') { $result='WANTED_NUMERIC'; }
else {$result = "ERROR: Unknown Result:$result:$@:";}
- return "$result:
Error $error:
Answer $answer:
Response $response:
type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units
$message$expr";
+ return "$result:
Error $error:
Answer $answer:
Response $response:
type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|
$message$expr";
}
-sub caparesponse_check_list {
- my ($response,$expr)=@_;
+sub get_array_args {
+ my ($expr,$arg)=@_;
# do these first, because who knows what varname the instructor might have used
# 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;
my $result='';
$result.="error:$@:
";
@@ -104,6 +100,12 @@ sub caparesponse_check_list {
$result.="list zero is undefined
";
$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 $current_answer;
$result.="Got response :$CAPARESPONSE_CHECK_LIST_answer:$list[0]:
";