[LON-CAPA-cvs] cvs: loncom /homework radiobuttonresponse.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Fri, 16 May 2003 19:25:08 -0000
albertel Fri May 16 15:25:08 2003 EDT
Modified files:
/loncom/homework radiobuttonresponse.pm
Log:
- Fixes BUG#1439 for rbr
Index: loncom/homework/radiobuttonresponse.pm
diff -u loncom/homework/radiobuttonresponse.pm:1.70 loncom/homework/radiobuttonresponse.pm:1.71
--- loncom/homework/radiobuttonresponse.pm:1.70 Fri Apr 18 13:10:08 2003
+++ loncom/homework/radiobuttonresponse.pm Fri May 16 15:25:08 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# mutliple choice style responses
#
-# $Id: radiobuttonresponse.pm,v 1.70 2003/04/18 17:10:08 sakharuk Exp $
+# $Id: radiobuttonresponse.pm,v 1.71 2003/05/16 19:25:08 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -295,9 +295,10 @@
&Apache::lonxml::debug("Max is $max, From $#truelist elms, picking $whichtrue");
my (@toplist, @bottomlist);
my $topcount=0;
+ my $bottomcount=0;
# assign everyone to either toplist/bottomlist or whichfalse
# which false is randomized, toplist bottomlist are in order
- while ((($#whichfalse) < $max-2) && ($#falselist > -1)) {
+ while ((($#whichfalse+$topcount+$bottomcount) < $max-2) && ($#falselist > -1)) {
&Apache::lonxml::debug("Have $#whichfalse max is $max");
my $afalse=int(&Math::Random::random_uniform() * ($#falselist+1));
&Apache::lonxml::debug("From $#falselist elms, picking $afalse");
@@ -310,10 +311,12 @@
$topcount++;
} elsif ($bottom{$afalse}) {
$bottomlist[$bottom{$afalse}]=$afalse;
+ $bottomcount++;
} else {
push (@whichfalse,$afalse);
}
}
+ &Apache::lonxml::debug("Answer wants $answer");
my $truename=$truelist[$whichtrue];
my $dosplice=1;
#insert the true statement, keeping track of where it wants to be
@@ -335,11 +338,12 @@
$answer+=$topcount+$#whichfalse+1;
$dosplice=0;
} else {
- if ($topcount>0) {
- $answer = int(&Math::Random::random_uniform() * ($#whichfalse+1))
- + $topcount;
+ if ($topcount>0 || $bottomcount>0) {
+ $answer = int(&Math::Random::random_uniform() * ($#whichfalse+1))
+ + $topcount;
}
}
+ &Apache::lonxml::debug("Answer now wants $answer");
#add the top items to the top, bottom items to the bottom
for (my $i=0;$i<=$#toplist;$i++) {
if ($toplist[$i]) { unshift(@whichfalse,$toplist[$i]) }