Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.252 and 1.253

version 1.252, 2012/03/05 11:50:39 version 1.253, 2012/12/14 11:17:09
Line 446  sub check_submission { Line 446  sub check_submission {
     }      }
   
     my (@final_awards,@final_msgs,@names);      my (@final_awards,@final_msgs,@names);
       # $Apache::lonxml::debug = 1; # DEBUG
     foreach my $name (keys(%answer)) {      foreach my $name (keys(%answer)) {
  &Apache::lonxml::debug(" doing $name with ".join(':',@{ $answer{$name}{'answers'} }));   &Apache::lonxml::debug(" doing $name with ".join(':',@{ $answer{$name}{'answers'} }));
   
Line 456  sub check_submission { Line 457  sub check_submission {
  my ($result,@msgs) =    my ($result,@msgs) = 
     &Apache::run::run("&caparesponse_check_list()",$safeeval);      &Apache::run::run("&caparesponse_check_list()",$safeeval);
  &Apache::lonxml::debug("checking $name $result with $response took ".&Time::HiRes::tv_interval($t0));   &Apache::lonxml::debug("checking $name $result with $response took ".&Time::HiRes::tv_interval($t0));
           
  &Apache::lonxml::debug('msgs are '.join(':',@msgs));   &Apache::lonxml::debug('msgs are '.join(':',@msgs));
  my ($awards)=split(/:/,$result);   my ($awards)=split(/:/,$result);
  my @awards= split(/,/,$awards);   my @awards= split(/,/,$awards);
Line 465  sub check_submission { Line 465  sub check_submission {
  push(@final_msgs,$msg);   push(@final_msgs,$msg);
  push(@names,$name);   push(@names,$name);
     }      }
       # $Apache::lonxml::debug = 0; # DEBUG
     my ($ad, $msg, $name) = &Apache::inputtags::finalizeawards(\@final_awards,      my ($ad, $msg, $name) = &Apache::inputtags::finalizeawards(\@final_awards,
        \@final_msgs,         \@final_msgs,
        \@names,1);         \@names,1);
Line 784  sub end_numericalresponse { Line 785  sub end_numericalresponse {
     $ans.=" $cleanunit";      $ans.=" $cleanunit";
  }   }
     }      }
       #
       # The computer's response must be cast in a form that 
       # ensures it has sufficient significant figures.
       # the only way to do this is to sprintf it into scientific notation
       # due to the ambiguity of trailing zeros.
       # See Bug 6577
       #
       my ($sigMax, $sigmin) = &get_sigrange($Apache::inputtags::params{'sig'});
       my $sigfigs = $sigMax-1;
   
       for (my $i = 0; $i < scalar @$response; $i++) {
    $response->[$i] = sprintf('%.' . $sigfigs . 'e', $response->[$i]);
       }
     my ($ad,$msg)=&check_submission($response,$partid,$id,$tag,      my ($ad,$msg)=&check_submission($response,$partid,$id,$tag,
     $parstack,$safeeval);      $parstack,$safeeval);
     if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') {      if ($ad ne 'EXACT_ANS' && $ad ne 'APPROX_ANS') {

Removed from v.1.252  
changed lines
  Added in v.1.253


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