Diff for /loncom/homework/default_homework.lcpm between versions 1.63 and 1.64

version 1.63, 2003/06/07 03:52:39 version 1.64, 2003/06/24 20:41:56
Line 42  $"=' '; Line 42  $"=' ';
 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,$samples) =    my ($type,$tol,$sig,$ans_fmt,$unit,$calc,$samples) =
     eval $_[1].      eval $_[2].
       ';return ($answer,$type,$tol,$sig,$ans_fmt,$unit,$calc,$samples);';        ';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 $tol_type=''; # gets it's value from whether tol has a % or not done
   my $sig_lbound=''; #done    my $sig_lbound=''; #done
   my $sig_ubound=''; #done    my $sig_ubound=''; #done
   my ($response,$expr)=@_;    my ($answer,$response,$expr)=@_;
   
   
   #type's definitons come from capaParser.h    #type's definitons come from capaParser.h
Line 137  sub get_array_args { Line 137  sub get_array_args {
   # 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 $'.$arg; #' stupid emacs    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;    my @GET_ARRAY_ARGS_list;
   if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) {    if ($CAPARESPONSE_CHECK_LIST_answer =~ /^\s*[\$\@]/) {
     (@GET_ARRAY_ARGS_list) = eval $CAPARESPONSE_CHECK_LIST_answer;      (@GET_ARRAY_ARGS_list) = eval $CAPARESPONSE_CHECK_LIST_answer;
Line 153  sub get_array_args { Line 153  sub get_array_args {
   
 sub caparesponse_check_list {  sub caparesponse_check_list {
   my ($response,$expr)=@_;    my ($response,$expr)=@_;
   $expr =~ s/\\/\\\\/g;  #  $expr =~ s/\\/\\\\/g;
   $expr =~ s/\'/\\\'/g;  #  $expr =~ s/\'/\\\'/g;
   my ($result,@list) = &get_array_args($expr,'answer');  #  my ($result,@list) = &get_array_args($expr,'answer');
   $expr =~ s/\\\'/\'/g;  #  $expr =~ s/\\\'/\'/g;
   $expr =~ s/\\\\/\\/g;  #  $expr =~ s/\\\\/\\/g;
     my ($result,@list);
     @list=@CAPARESPONSE_CHECK_LIST_answer;
   my $aresult='';    my $aresult='';
   my $current_answer;    my $current_answer;
   my $answers=join(':',@list);    my $answers=join(':',@list);
   $result.="Got response :$answers:\n";    $result.="Got response :$answers:\n";
   my @responselist;    my @responselist;
   my $type =eval $expr.';return $answer;';    my $type =eval $expr.';return $type;';
   if ($type ne '' && $#list > 0) {    if ($type ne '' && $#list > 0) {
     (@responselist)=split /,/,$response;      (@responselist)=split /,/,$response;
   } else {    } else {
Line 171  sub caparesponse_check_list { Line 173  sub caparesponse_check_list {
   }    }
   my $unit='';    my $unit='';
   $result.="Initial final response :$responselist['-1']:\n";    $result.="Initial final response :$responselist['-1']:\n";
   if ($type eq '') {    if ($type eq '' || $type eq 'float') {
     #for numerical problems split off the unit      #for numerical problems split off the unit
     if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {      if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {
       $responselist['-1']=$1;        $responselist['-1']=$1;
Line 186  sub caparesponse_check_list { Line 188  sub caparesponse_check_list {
   for ($i=0; $i<@list;$i++) {    for ($i=0; $i<@list;$i++) {
     $result.="trying answer :$list[$i]:\n";      $result.="trying answer :$list[$i]:\n";
     my $thisanswer=$list[$i];      my $thisanswer=$list[$i];
     $thisanswer=~ s/\\/\\\\/g;  #    $thisanswer=~ s/\\/\\\\/g;
     $thisanswer =~ s/\'/\\\'/g;  #    $thisanswer =~ s/\'/\\\'/g;
       $result.="trying answer :$thisanswer:\n";
     if ($unit eq '') {      if ($unit eq '') {
       $aresult=&caparesponse_check($responselist[$i],        $aresult=&caparesponse_check($thisanswer,$responselist[$i],
      $expr.';my $answer=\''.$thisanswer.'\';');       $expr);
     } else {      } else {
       $aresult=&caparesponse_check($responselist[$i]." $unit",        $aresult=&caparesponse_check($thisanswer,$responselist[$i]." $unit",
    $expr.';my $answer=\''.$thisanswer.'\';');     $expr);
     }      }
     my ($temp)=split /:/, $aresult;      my ($temp)=split /:/, $aresult;
     $awards.="$temp,";      $awards.="$temp,";

Removed from v.1.63  
changed lines
  Added in v.1.64


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>