[LON-CAPA-cvs] cvs: loncom(version_1_1_X) /homework/caparesponse caparesponse.pm

albertel lon-capa-cvs@mail.lon-capa.org
Thu, 26 Feb 2004 18:24:24 -0000


albertel		Thu Feb 26 13:24:24 2004 EDT

  Modified files:              (Branch: version_1_1_X)
    /loncom/homework/caparesponse	caparesponse.pm 
  Log:
  - backporting bubbl fixes 1.134 1.135
  
  
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.126.2.1 loncom/homework/caparesponse/caparesponse.pm:1.126.2.2
--- loncom/homework/caparesponse/caparesponse.pm:1.126.2.1	Thu Feb 19 14:24:38 2004
+++ loncom/homework/caparesponse/caparesponse.pm	Thu Feb 26 13:24:24 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # caparesponse definition
 #
-# $Id: caparesponse.pm,v 1.126.2.1 2004/02/19 19:24:38 albertel Exp $
+# $Id: caparesponse.pm,v 1.126.2.2 2004/02/26 18:24:24 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -383,23 +383,24 @@
 	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)+2)*$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;
+    $cell_width+=8; 
     my $textwidth;
     if ($ENV{'form.textwidth'} ne '') {
-	$ENV{'form.textwidth'}=~/(\d+)/;
-	$textwidth=$1;
+	$ENV{'form.textwidth'}=~/(\d*)\.?(\d*)/;
+	$textwidth=$1.'.'.$2;
     } else {
-	$ENV{'textwidth'}=~/(\d+)/;
-	$textwidth=$1;
+	$ENV{'textwidth'}=~/(\d+)\.?(\d*)/;
+	$textwidth=$1.'.'.$2;
     }
     my $bubbles_per_line=int($textwidth/$cell_width);
+    if (($bubbles_per_line > $number_of_bubbles/2) && ($number_of_bubbles % 2==0)) {$bubbles_per_line=$number_of_bubbles/2;}
     my $number_of_tables = int($number_of_bubbles/$bubbles_per_line);
     my @table_range = ();
     for (my $i=0;$i<$number_of_tables;$i++) {push @table_range,$bubbles_per_line;}
@@ -457,9 +458,17 @@
 	    @bubble_values=sort {$a <=> $b} (@bubble_values,$answer);
 	    &Apache::lonxml::debug("Answer was :$answer: returning :".$#bubble_values.": whih are :".join(':',@bubble_values));
 	    &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;
 	}
-	#FIXME what to do when not enough incorrects specified?
+	if (defined($$incorrect[0]) &&
+	    scalar(@$incorrect)+1 < $number_of_bubbles) {
+	    &Apache::lonxml::warning("Not enough incorrect answers were specified in the incorrect array, ignoring the specified incorrect answers and instead generating them.");
+	}
     }
     my @factors = (1.13,1.17,1.25,1.33,1.45); #default values of factors
     my @powers = (1..$number_of_bubbles);