--- loncom/homework/default_homework.lcpm 2003/06/07 03:52:39 1.63 +++ loncom/homework/default_homework.lcpm 2003/06/24 20:41:56 1.64 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.63 2003/06/07 03:52:39 albertel Exp $ +# $Id: default_homework.lcpm,v 1.64 2003/06/24 20:41:56 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -42,14 +42,14 @@ $"=' '; sub caparesponse_check { #not properly used yet: calc #not to be used: $ans_fmt - my ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) = - eval $_[1]. - ';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples);'; + my ($type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) = + eval $_[2]. + ';return ($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 my $sig_ubound=''; #done - my ($response,$expr)=@_; + my ($answer,$response,$expr)=@_; #type's definitons come from capaParser.h @@ -137,7 +137,7 @@ 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; #' stupid emacs - my $GET_ARRAY_ARGS_result; + my $GET_ARRAY_ARGS_result="expr is $expr\narg is $arg\nfirst answer guess is $CAPARESPONSE_CHECK_LIST_answer\n"; my @GET_ARRAY_ARGS_list; if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) { (@GET_ARRAY_ARGS_list) = eval $CAPARESPONSE_CHECK_LIST_answer; @@ -153,17 +153,19 @@ sub get_array_args { sub caparesponse_check_list { my ($response,$expr)=@_; - $expr =~ s/\\/\\\\/g; - $expr =~ s/\'/\\\'/g; - my ($result,@list) = &get_array_args($expr,'answer'); - $expr =~ s/\\\'/\'/g; - $expr =~ s/\\\\/\\/g; +# $expr =~ s/\\/\\\\/g; +# $expr =~ s/\'/\\\'/g; +# my ($result,@list) = &get_array_args($expr,'answer'); +# $expr =~ s/\\\'/\'/g; +# $expr =~ s/\\\\/\\/g; + my ($result,@list); + @list=@CAPARESPONSE_CHECK_LIST_answer; my $aresult=''; my $current_answer; my $answers=join(':',@list); $result.="Got response :$answers:\n"; my @responselist; - my $type =eval $expr.';return $answer;'; + my $type =eval $expr.';return $type;'; if ($type ne '' && $#list > 0) { (@responselist)=split /,/,$response; } else { @@ -171,7 +173,7 @@ sub caparesponse_check_list { } my $unit=''; $result.="Initial final response :$responselist['-1']:\n"; - if ($type eq '') { + if ($type eq '' || $type eq 'float') { #for numerical problems split off the unit if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) { $responselist['-1']=$1; @@ -186,14 +188,15 @@ sub caparesponse_check_list { for ($i=0; $i<@list;$i++) { $result.="trying answer :$list[$i]:\n"; my $thisanswer=$list[$i]; - $thisanswer=~ s/\\/\\\\/g; - $thisanswer =~ s/\'/\\\'/g; +# $thisanswer=~ s/\\/\\\\/g; +# $thisanswer =~ s/\'/\\\'/g; + $result.="trying answer :$thisanswer:\n"; if ($unit eq '') { - $aresult=&caparesponse_check($responselist[$i], - $expr.';my $answer=\''.$thisanswer.'\';'); + $aresult=&caparesponse_check($thisanswer,$responselist[$i], + $expr); } else { - $aresult=&caparesponse_check($responselist[$i]." $unit", - $expr.';my $answer=\''.$thisanswer.'\';'); + $aresult=&caparesponse_check($thisanswer,$responselist[$i]." $unit", + $expr); } my ($temp)=split /:/, $aresult; $awards.="$temp,";