version 1.643, 2011/01/23 01:04:21
|
version 1.644, 2011/02/07 00:53:10
|
Line 8841 sub process_clicker_file {
|
Line 8841 sub process_clicker_file {
|
if ($env{'form.gradingmechanism'} eq 'given') { |
if ($env{'form.gradingmechanism'} eq 'given') { |
$env{'form.givenanswer'}=~s/^\s*//gs; |
$env{'form.givenanswer'}=~s/^\s*//gs; |
$env{'form.givenanswer'}=~s/\s*$//gs; |
$env{'form.givenanswer'}=~s/\s*$//gs; |
$env{'form.givenanswer'}=~s/[^a-zA-Z0-9\.\*\-]+/\,/g; |
$env{'form.givenanswer'}=~s/[^a-zA-Z0-9\.\*\-\+]+/\,/g; |
$env{'form.givenanswer'}=uc($env{'form.givenanswer'}); |
$env{'form.givenanswer'}=uc($env{'form.givenanswer'}); |
my @answers=split(/\,/,$env{'form.givenanswer'}); |
my @answers=split(/\,/,$env{'form.givenanswer'}); |
$foundgiven=$#answers+1; |
$foundgiven=$#answers+1; |
Line 9019 sub iclicker_eval {
|
Line 9019 sub iclicker_eval {
|
$id=~s/^[\#0]+//; |
$id=~s/^[\#0]+//; |
for (my $i=0;$i<$number;$i++) { |
for (my $i=0;$i<$number;$i++) { |
my $idx=3+$i*6; |
my $idx=3+$i*6; |
|
$entries[$idx]=~s/[^a-zA-Z0-9\.\*\-\+]+//g; |
push(@idresponses,$entries[$idx]); |
push(@idresponses,$entries[$idx]); |
} |
} |
$$responses{$id}=join(',',@idresponses); |
$$responses{$id}=join(',',@idresponses); |
Line 9090 sub assign_clicker_grades {
|
Line 9091 sub assign_clicker_grades {
|
$result.='<br /><span class="LC_warning">'. |
$result.='<br /><span class="LC_warning">'. |
&mt('More than one correct result given for question "[_1]": [_2] versus [_3].', |
&mt('More than one correct result given for question "[_1]": [_2] versus [_3].', |
$env{'form.question:'.$i},$correct[$i],$input[$i]).'</span>'; |
$env{'form.question:'.$i},$correct[$i],$input[$i]).'</span>'; |
} elsif ($input[$i]) { |
} elsif (($input[$i]) || ($input[$i] eq '0')) { |
$correct[$i]=$input[$i]; |
$correct[$i]=$input[$i]; |
} |
} |
} |
} |
} |
} |
} |
} |
for (my $i=0;$i<$number;$i++) { |
for (my $i=0;$i<$number;$i++) { |
if (!$correct[$i]) { |
if ((!$correct[$i]) && ($correct[$i] ne '0')) { |
$result.='<br /><span class="LC_error">'. |
$result.='<br /><span class="LC_error">'. |
&mt('No correct result given for question "[_1]"!', |
&mt('No correct result given for question "[_1]"!', |
$env{'form.question:'.$i}).'</span>'; |
$env{'form.question:'.$i}).'</span>'; |
} |
} |
} |
} |
$result.='<br />'.&mt("Correct answer: [_1]",join(', ',map { ($_?$_:'-') } @correct)); |
$result.='<br />'.&mt("Correct answer: [_1]",join(', ',map { ((($_) || ($_ eq '0'))?$_:'-') } @correct)); |
} |
} |
# Start grading |
# Start grading |
my $pcorrect=$env{'form.pcorrect'}; |
my $pcorrect=$env{'form.pcorrect'}; |
Line 9136 sub assign_clicker_grades {
|
Line 9137 sub assign_clicker_grades {
|
for (my $i=0;$i<$number;$i++) { |
for (my $i=0;$i<$number;$i++) { |
if ($correct[$i] eq '-') { |
if ($correct[$i] eq '-') { |
$realnumber--; |
$realnumber--; |
} elsif ($answer[$i]) { |
} elsif (($answer[$i]) || ($answer[$i]=~/^[0\.]+$/)) { |
if ($gradingmechanism eq 'attendance') { |
if ($gradingmechanism eq 'attendance') { |
$sum+=$pcorrect; |
$sum+=$pcorrect; |
} elsif ($correct[$i] eq '*') { |
} elsif ($correct[$i] eq '*') { |
$sum+=$pcorrect; |
$sum+=$pcorrect; |
} else { |
} else { |
if ($answer[$i] eq $correct[$i]) { |
# We actually grade if correct or not |
$sum+=$pcorrect; |
my $increment=$pincorrect; |
} else { |
# Special case: numerical answer "0" |
$sum+=$pincorrect; |
if ($correct[$i] eq '0') { |
|
if ($answer[$i]=~/^[0\.]+$/) { |
|
$increment=$pcorrect; |
|
} |
|
# General numerical answer, both evaluate to something non-zero |
|
} elsif ((1.0*$correct[$i]!=0) && (1.0*$answer[$i]!=0)) { |
|
if (1.0*$correct[$i]==1.0*$answer[$i]) { |
|
$increment=$pcorrect; |
|
} |
|
# Must be just alphanumeric |
|
} elsif ($answer[$i] eq $correct[$i]) { |
|
$increment=$pcorrect; |
} |
} |
|
$sum+=$increment; |
} |
} |
} |
} |
} |
} |