--- loncom/homework/default_homework.lcpm 2001/07/27 18:15:04 1.33 +++ 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]:
";