--- loncom/homework/default_homework.lcpm 2001/10/05 22:28:31 1.38 +++ loncom/homework/default_homework.lcpm 2001/10/29 21:15:44 1.39 @@ -15,8 +15,9 @@ $deg2rad=$pi/180.0; sub caparesponse_check { #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 ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) = + 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 $sig_lbound=''; #done @@ -47,6 +48,13 @@ sub caparesponse_check { } 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
"; + } if ($tol eq '') { $tol=0.0; $tol_type=1; #TOL_ABSOLUTE @@ -68,7 +76,8 @@ sub caparesponse_check { my $result = &caparesponse_capa_check_answer($response,$answer,$type, $tol_type,$tol, $sig_lbound,$sig_ubound, - $ans_fmt,$unit,$calc); + $ans_fmt,$unit,$calc,$id_list, + $points,$external::randomseed); if ($result == '1') { $result='EXACT_ANS'; } elsif ($result == '2') { $result='APPROX_ANS'; } @@ -92,7 +101,9 @@ sub get_array_args { # 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 $'.$arg; #' - my (@list) = eval $CAPARESPONSE_CHECK_LIST_answer; + if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) { + my (@list) = eval $CAPARESPONSE_CHECK_LIST_answer; + } my $result=''; $result.="error:$@:
"; # if the eval fails just use what is in the answer exactly @@ -108,7 +119,8 @@ sub caparesponse_check_list { my (@list) = &get_array_args($expr,'answer'); my $aresult=''; my $current_answer; - $result.="Got response :$CAPARESPONSE_CHECK_LIST_answer:$list[0]:
"; + my $answers=join(':',@list); + $result.="Got response :$answers:
"; my @responselist; my $type =eval $expr.';return $answer;'; if ($type ne '' && $#list > 0) {