Diff for /loncom/homework/caparesponse/caparesponse.pm between versions 1.126.2.2 and 1.127

version 1.126.2.2, 2004/02/26 18:24:24 version 1.127, 2004/02/05 21:04:24
Line 254  sub end_numericalresponse { Line 254  sub end_numericalresponse {
  }   }
  if ($tag eq 'numericalresponse') {   if ($tag eq 'numericalresponse') {
     my ($celllength,$number_of_tables,@table_range)=      my ($celllength,$number_of_tables,@table_range)=
  &get_table_sizes($number_of_bubbles,\@bubble_values);   &get_table_sizes($formats[0],$number_of_bubbles);
     my $j=0;      my $j=0;
     my $cou=0;      my $cou=0;
     $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';      $result.='\vskip -1 mm \noindent \begin{enumerate}\item[\textbf{'.$Apache::lonxml::counter.'}.]';
     for (my $i=0;$i<$number_of_tables;$i++) {      for (my $i=0;$i<$number_of_tables;$i++) {
  $result.='\vskip -1 mm \noindent \begin{tabular}{';   $result.='\vskip -1 mm \noindent \begin{tabular}{';
  for (my $ind=0;$ind<$table_range[$j];$ind++) {   for (my $ind=0;$ind<$table_range[$j];$ind++) {
     $result.='p{3 mm}p{'.$celllength.' mm}';      $result.='lp{'.$celllength.' mm}';
  }   }
  $result.='}';   $result.='}';
  for (my $ind=$cou;$ind<$cou+$table_range[$j];$ind++) {   for (my $ind=$cou;$ind<$cou+$table_range[$j];$ind++) {
     $result.='\hskip -4 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$ & \hskip -3 mm {\small '.$bubble_values[$ind].'} ';      $result.='\hskip -3 mm {\small \textbf{'.$alphabet[$ind].'}}$\bigcirc$\hskip -2 mm & {\small '.$bubble_values[$ind].'} ';
     if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}      if ($ind != $cou+$table_range[$j]-1) {$result.=' & ';}
  }   }
  $cou += $table_range[$j];   $cou += $table_range[$j];
Line 376  sub end_numericalresponse { Line 376  sub end_numericalresponse {
 }  }
   
 sub get_table_sizes {  sub get_table_sizes {
     my ($number_of_bubbles,$rbubble_values)=@_;      my ($format,$number_of_bubbles)=@_;
     my $scale=2; #mm for one digit      my $max_val = 0;
     my $cell_width=0;      if ($format=~m/^(\d+)E([^\d]*)(\d*)$/) {
     foreach my $member (@$rbubble_values) {   $max_val=$1+$2+4;
  my $cell_width_real=0;  
  if ($member=~/(\d*)\.?(\d*)(E|e)(\+|-)?(\d*)/) {  
     $cell_width_real=(length($1)+length($2)+length($5)+9)*$scale;  
  } elsif ($member=~/(\d*)\.(\d*)/) {  
     $cell_width_real=(length($1)+length($2)+3)*$scale;  
  } else {  
     $cell_width_real=(length($member)+1)*$scale;  
  }  
  if ($cell_width_real>$cell_width) {$cell_width=$cell_width_real;}  
     }  
     $cell_width+=8;   
     my $textwidth;  
     if ($ENV{'form.textwidth'} ne '') {  
  $ENV{'form.textwidth'}=~/(\d*)\.?(\d*)/;  
  $textwidth=$1.'.'.$2;  
     } else {      } else {
  $ENV{'textwidth'}=~/(\d+)\.?(\d*)/;   $max_val=4;
  $textwidth=$1.'.'.$2;  
     }      }
     my $bubbles_per_line=int($textwidth/$cell_width);      $max_val = int(0.9*$ENV{'form.textwidth'}/(($max_val+6)*2));
     if (($bubbles_per_line > $number_of_bubbles/2) && ($number_of_bubbles % 2==0)) {$bubbles_per_line=$number_of_bubbles/2;}      my $celllength = 0.9*$ENV{'form.textwidth'}/$max_val-10;
     my $number_of_tables = int($number_of_bubbles/$bubbles_per_line);  
     my @table_range = ();      my @table_range = ();
     for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$bubbles_per_line;}      my $number_of_tables = int($number_of_bubbles/$max_val);
     if ($number_of_bubbles % $bubbles_per_line) {      for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$max_val;}
       if ($number_of_bubbles % $max_val != 0) {
  $number_of_tables++;   $number_of_tables++;
  push @table_range,($number_of_bubbles % $bubbles_per_line);   push @table_range,($number_of_bubbles % $max_val);
     }      }
     $cell_width-=8;      return ($celllength,$number_of_tables,@table_range);
     return ($cell_width,$number_of_tables,@table_range);  
 }  }
   
 sub format_number {  sub format_number {
Line 458  sub make_numerical_bubbles { Line 441  sub make_numerical_bubbles {
     @bubble_values=sort {$a <=> $b} (@bubble_values,$answer);      @bubble_values=sort {$a <=> $b} (@bubble_values,$answer);
     &Apache::lonxml::debug("Answer was :$answer: returning :".$#bubble_values.": whih are :".join(':',@bubble_values));      &Apache::lonxml::debug("Answer was :$answer: returning :".$#bubble_values.": whih are :".join(':',@bubble_values));
     &Math::Random::random_set_seed(@oldseed);      &Math::Random::random_set_seed(@oldseed);
     if (defined($format) && $format ne '') {  
  foreach my $value (@bubble_values) {  
     $value=&format_number($value,$format,$target);  
  }  
     }  
     return @bubble_values;      return @bubble_values;
  }   }
  if (defined($$incorrect[0]) &&   if (defined($$incorrect[0]) &&

Removed from v.1.126.2.2  
changed lines
  Added in v.1.127


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