Diff for /loncom/homework/default_homework.lcpm between versions 1.15 and 1.20

version 1.15, 2001/01/16 20:15:40 version 1.20, 2001/05/25 21:20:19
Line 2 Line 2
 # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run()  # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run()
 #   # 
 #  #
   #init some globals
   #use Math::Trig;
   #
   # Guy Albertelli
   #
   # 05/25/2001 H. K. Ng
   #
 $RANDOMINIT=0;  $RANDOMINIT=0;
   $pi=atan2(1,1)*4;
   
 sub caparesponse_check {  sub caparesponse_check {
   my $answer='';  #done    my $answer='';  #done
   my $type='';    #done    my $type='';    #done
   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 $tol='';     #done    my $tol='';     #done
   my $sig='';    my $sig='';     #done lowerbnd,upperbnd
   my $sig_lbound='';    my $sig_lbound=''; #done
   my $sig_ubound='';    my $sig_ubound=''; #done
   my $ans_fmt='';    my $ans_fmt='';
   my $units='';    my $units='';     #done
   my $calc='';    my $calc='';
   my ($response,$expr)=@_;    my ($response,$expr)=@_;
       
Line 69  sub caparesponse_check { Line 77  sub caparesponse_check {
   elsif ($result =='12') { $result='WANTED_NUMERIC'; }    elsif ($result =='12') { $result='WANTED_NUMERIC'; }
   else  {$result = "ERROR: Unknown Result:$result:$@:";}    else  {$result = "ERROR: Unknown Result:$result:$@:";}
   
   return "$result:<br>Error $error:<br>Answer $answer:<br>Response $response:<br>$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units<br>";    return "$result:<br />Error $error:<br />Answer $answer:<br />Response $response:<br />$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$units<br />";
 }  }
   
 sub caparesponse_check_list {  sub caparesponse_check_list {
Line 81  sub caparesponse_check_list { Line 89  sub caparesponse_check_list {
   my (@list) = eval $answer;    my (@list) = eval $answer;
   my (@responselist)=split /,/,$response;    my (@responselist)=split /,/,$response;
   my $unit='';    my $unit='';
   $result.="Final response :$responselist['-1']:<br>";    $result.="Final response :$responselist['-1']:<br />";
   if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {    if ( $responselist['-1']=~ /(.*[^\s])\s+([^\s]+)/ ) {
     $responselist['-1']=$1;      $responselist['-1']=$1;
     $unit=$2;      $unit=$2;
   }    }
   $result.="Final response :$responselist['-1']:<br>";    $result.="Final response :$responselist['-1']:<br />";
   $unit=~s/\s//;    $unit=~s/\s//;
   my $i=0;    my $i=0;
   my $awards='';    my $awards='';
   for ($i=0; $i<@list;$i++) {    for ($i=0; $i<@list;$i++) {
     $aresult=&caparesponse_check($responselist[$i]." $unit",      if ($unit eq '') {
  $expr.';my $answer='.$list[$i].';');        $aresult=&caparesponse_check($responselist[$i],
        $expr.';my $answer='.$list[$i].';');
       } else {
         $aresult=&caparesponse_check($responselist[$i]." $unit",
      $expr.';my $answer='.$list[$i].';');
       }
     my ($temp)=split /:/, $aresult;      my ($temp)=split /:/, $aresult;
     $awards.="$temp,";      $awards.="$temp,";
     $result.=$aresult;      $result.=$aresult;
   }    }
   chop $awards;    chop $awards;
   return "$awards:<br>$result";    return "$awards:<br />$result";
 }  }
   
 sub tex {  sub tex {
Line 138  sub random { Line 151  sub random {
 }  }
   
 sub tan  { sin($_[0]) / cos($_[0]) }  sub tan  { sin($_[0]) / cos($_[0]) }
   sub atan { atan2($_[0], 1); }
 sub acos { atan2(sqrt(1 - $_[0] * $_[0]), $_[0] ); }  sub acos { atan2(sqrt(1 - $_[0] * $_[0]), $_[0] ); }
 sub asin { atan2($_[0], sqrt(1- $_[0] * $_[0]) );  }  sub asin { atan2($_[0], sqrt(1- $_[0] * $_[0]) );  }
   sub log10 { log($_[0])/log(10); }
   sub factorial {
       my $input = int(shift);
       return "Error - unable to take factorial of an negative number ($input)" if $input < 0;
       return "Error - factorial result is greater than system limit ($input)" if $input > 170;
       return 1 if $input == 0;
       my $result = 1; 
       for (my $i=2; $i<=$input; $i++) { $result *= $i }
       return $result;
   }
   
   sub sgn {
       return -1 if $_[0] < 0;
       return 0 if $_[0] == 0;
       return 1 if $_[0] > 0;
   }
   
   sub min {
       my @sorted = sort { $a <=> $b || $a cmp $b } @_;
       return shift @sorted;
   }
   
   sub max {
       my @sorted = sort { $a <=> $b || $a cmp $b } @_;
       return pop @sorted;
   }
   
 sub html {  sub html {
   if ( $external::target eq "web" ) {    if ( $external::target eq "web" ) {
Line 147  sub html { Line 187  sub html {
   }    }
 }  }
   
   sub roundto {
       my ($input,$n) = @_;
       return sprintf('%.'.$n.'f',$input);
   }
   
   sub to_string {
       my ($input,$n) = @_;
       return sprintf('%'.$n,$input) if $n ne "";
       return sprintf($input) if $n eq "";
   }
   
   sub sub_string {
       my ($str,$start,$len) = @_;
       return substr($str,$start-1,$len);
   }
   
 sub pow   {return $_[0] ** $_[1]; }  sub pow   {return $_[0] ** $_[1]; }
 sub ceil  {return (($_[0]-int($_[0]))== 0.0) ? $_[0] : (int($_[0])+ 1); }  sub ceil  {return (($_[0]-int($_[0]))== 0.0) ? $_[0] : (int($_[0])+ 1); }

Removed from v.1.15  
changed lines
  Added in v.1.20


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