Diff for /loncom/homework/default_homework.lcpm between versions 1.123 and 1.133

version 1.123, 2006/12/15 22:11:43 version 1.133, 2008/03/06 14:27:43
Line 157  sub caparesponse_check { Line 157  sub caparesponse_check {
   
     #&LONCAPA_INTERNAL_DEBUG(" type is $type ");      #&LONCAPA_INTERNAL_DEBUG(" type is $type ");
     if ($type eq 'cs' || $type eq 'ci') {      if ($type eq 'cs' || $type eq 'ci') {
  #for string answers make surec all places spaces occur, there is    #for string answers make sure all places spaces occur, there is 
         #really only 1 space, in both the answer and the response          #really only 1 space, in both the answer and the response
  $answer=~s/ +/ /g;   $answer=~s/ +/ /g;
  $response=~s/ +/ /g;   $response=~s/ +/ /g;
Line 166  sub caparesponse_check { Line 166  sub caparesponse_check {
  $response=~s/[\s,]//g;   $response=~s/[\s,]//g;
     }      }
     if ($type eq 'float' && $unit=~/\$/) {      if ($type eq 'float' && $unit=~/\$/) {
  if ($response!~/^\$/)  { return ('NO_UNIT', undef); }   if ($response!~/^\$|\$$/)  { return ('NO_UNIT', undef); }
  $response=~s/\$//g;   $response=~s/\$//g;
     }      }
     if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) {      if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) {
Line 217  sub caparesponse_check { Line 217  sub caparesponse_check {
   
     my $reterror="";      my $reterror="";
     my $result;      my $result;
       if ((($type eq '9') || ($type eq '8')) && ($response=~/\=/)) { return ('BAD_FORMULA','Please submit just an expression, not an equation.'); }
     if ($type eq '9') {      if ($type eq '9') {
       $result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror);        $result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror);
     } else {      } else {
Line 259  sub caparesponse_check { Line 260  sub caparesponse_check {
   
 sub caparesponse_check_list {  sub caparesponse_check_list {
     my $responses=$LONCAPA::CAPAresponse_args{'response'};      my $responses=$LONCAPA::CAPAresponse_args{'response'};
 #    &LONCAPA_INTERNAL_DEBUG(" answer is ".  
 #    &LONCAPA_INTERNAL_Dumper($LONCAPA::CAPAresponse_answer).":\n");  
 #    &LONCAPA_INTERNAL_DEBUG(" respons is ".  
 #    &LONCAPA_INTERNAL_Dumper($responses).":\n");  
     &LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args));      &LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args));
     my $type = $LONCAPA::CAPAresponse_args{'type'};      my $type = $LONCAPA::CAPAresponse_args{'type'};
     &LONCAPA_INTERNAL_DEBUG("Got type :$type:\n");      my $answerunit=$LONCAPA::CAPAresponse_args{'unit'};
       &LONCAPA_INTERNAL_DEBUG("Got type :$type: answer unit :$answerunit:\n");
           
     my $num_input_lines =      my $num_input_lines =
  scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}});   scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}});
Line 290  sub caparesponse_check_list { Line 288  sub caparesponse_check_list {
     $responses->[$which]=[$responses->[$which]];      $responses->[$which]=[$responses->[$which]];
  }   }
     }      }
 #    &LONCAPA_INTERNAL_DEBUG(" parsed response is ".  
 #    &LONCAPA_INTERNAL_Dumper($responses).":\n");  
     foreach my $which (0..($num_input_lines-1)) {      foreach my $which (0..($num_input_lines-1)) {
  my $answer_size =    my $answer_size = 
     scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]});      scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]});
Line 309  sub caparesponse_check_list { Line 305  sub caparesponse_check_list {
     my $unit;      my $unit;
     if ($type eq '' || $type eq 'float') {      if ($type eq '' || $type eq 'float') {
  #for numerical problems split off the unit   #for numerical problems split off the unit
  if ( $responses->[0][-1]=~ /(.*[^\s])\s+([^\s]+)/ ) {  # if ( $responses->[0][-1]=~ /(.*[^\s])\s+([^\s]+)/ ) {
           if ( $responses->[0][-1]=~ /^([\d\.\,\s\$]*(?:(?:[xX\*]10[\^\*]*|[eE]*)[\+\-]*\d*)*(?:^|\S)\d+)([\$\s\w\^\*\/\(\)\+\-]*[^\d\.\s\,][\$\s\w\^\*\/\(\)\+\-]*)$/ ) {
     $responses->[0][-1]=$1;      $responses->[0][-1]=$1;
     $unit=$2;      $unit=&capa_formula_fix($2);
               &LONCAPA_INTERNAL_DEBUG("Found unit :$unit:");
  }   }
     }      }
     &LONCAPA_INTERNAL_DEBUG("Final final response :$responses->[0][-1]:$unit:");      &LONCAPA_INTERNAL_DEBUG("Final final response :$responses->[0][-1]:$unit:");
     $unit=~s/\s//;      $unit=~s/\s//;
     if ($unit ne '') {      foreach my $response (@$responses) {
  foreach my $response (@$responses) {         foreach my $element (@$response) {
     foreach my $element (@$response) {                $element =~ s/\s//g;
  $element .= " $unit";            my $appendunit=$unit;
     }            if ($unit=~/\%/) {
  }               $element=$element/100;
                $appendunit=~s/\%//;
             }    
             if (($element==0) && ($unit!~/\w/) && ($answerunit=~/\w/)) {
                $appendunit=$answerunit;
             }
             $element .= " $appendunit";
             &LONCAPA_INTERNAL_DEBUG("Made response element :$element:");
          }
     }      }
           
     foreach my $thisanswer (@{ $LONCAPA::CAPAresponse_answer->{'answers'} }) {      foreach my $thisanswer (@{ $LONCAPA::CAPAresponse_answer->{'answers'} }) {
Line 417  sub caparesponse_check_list { Line 423  sub caparesponse_check_list {
     return ($final_award,$final_msg);      return ($final_award,$final_msg);
 }  }
   
   sub cas {
       my ($system,$input)=@_;
       my $output;
       if ($system eq 'maxima') {
          $output=&maxima_eval($input);
       }
       return $output;
   }
   
 sub tex {  sub tex {
     if ( $external::target eq "tex" ) {      if ( $external::target eq "tex" ) {
  return $_[0];   return $_[0];

Removed from v.1.123  
changed lines
  Added in v.1.133


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