version 1.124, 2006/12/19 14:24:05
|
version 1.133, 2008/03/06 14:27:43
|
Line 157 sub caparesponse_check {
|
Line 157 sub caparesponse_check {
|
|
|
#&LONCAPA_INTERNAL_DEBUG(" type is $type "); |
#&LONCAPA_INTERNAL_DEBUG(" type is $type "); |
if ($type eq 'cs' || $type eq 'ci') { |
if ($type eq 'cs' || $type eq 'ci') { |
#for string answers make surec all places spaces occur, there is |
#for string answers make sure all places spaces occur, there is |
#really only 1 space, in both the answer and the response |
#really only 1 space, in both the answer and the response |
$answer=~s/ +/ /g; |
$answer=~s/ +/ /g; |
$response=~s/ +/ /g; |
$response=~s/ +/ /g; |
Line 166 sub caparesponse_check {
|
Line 166 sub caparesponse_check {
|
$response=~s/[\s,]//g; |
$response=~s/[\s,]//g; |
} |
} |
if ($type eq 'float' && $unit=~/\$/) { |
if ($type eq 'float' && $unit=~/\$/) { |
if ($response!~/^\$/) { return ('NO_UNIT', undef); } |
if ($response!~/^\$|\$$/) { return ('NO_UNIT', undef); } |
$response=~s/\$//g; |
$response=~s/\$//g; |
} |
} |
if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) { |
if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) { |
Line 217 sub caparesponse_check {
|
Line 217 sub caparesponse_check {
|
|
|
my $reterror=""; |
my $reterror=""; |
my $result; |
my $result; |
|
if ((($type eq '9') || ($type eq '8')) && ($response=~/\=/)) { return ('BAD_FORMULA','Please submit just an expression, not an equation.'); } |
if ($type eq '9') { |
if ($type eq '9') { |
$result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror); |
$result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror); |
} else { |
} else { |
Line 259 sub caparesponse_check {
|
Line 260 sub caparesponse_check {
|
|
|
sub caparesponse_check_list { |
sub caparesponse_check_list { |
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
# &LONCAPA_INTERNAL_DEBUG(" answer is ". |
|
# &LONCAPA_INTERNAL_Dumper($LONCAPA::CAPAresponse_answer).":\n"); |
|
# &LONCAPA_INTERNAL_DEBUG(" respons is ". |
|
# &LONCAPA_INTERNAL_Dumper($responses).":\n"); |
|
&LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args)); |
&LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args)); |
my $type = $LONCAPA::CAPAresponse_args{'type'}; |
my $type = $LONCAPA::CAPAresponse_args{'type'}; |
&LONCAPA_INTERNAL_DEBUG("Got type :$type:\n"); |
my $answerunit=$LONCAPA::CAPAresponse_args{'unit'}; |
|
&LONCAPA_INTERNAL_DEBUG("Got type :$type: answer unit :$answerunit:\n"); |
|
|
my $num_input_lines = |
my $num_input_lines = |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}}); |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}}); |
Line 290 sub caparesponse_check_list {
|
Line 288 sub caparesponse_check_list {
|
$responses->[$which]=[$responses->[$which]]; |
$responses->[$which]=[$responses->[$which]]; |
} |
} |
} |
} |
# &LONCAPA_INTERNAL_DEBUG(" parsed response is ". |
|
# &LONCAPA_INTERNAL_Dumper($responses).":\n"); |
|
foreach my $which (0..($num_input_lines-1)) { |
foreach my $which (0..($num_input_lines-1)) { |
my $answer_size = |
my $answer_size = |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]}); |
scalar(@{$LONCAPA::CAPAresponse_answer->{'answers'}[$which]}); |
Line 309 sub caparesponse_check_list {
|
Line 305 sub caparesponse_check_list {
|
my $unit; |
my $unit; |
if ($type eq '' || $type eq 'float') { |
if ($type eq '' || $type eq 'float') { |
#for numerical problems split off the unit |
#for numerical problems split off the unit |
if ( $responses->[0][-1]=~ /(.*[^\s])\s+([^\s]+)/ ) { |
# if ( $responses->[0][-1]=~ /(.*[^\s])\s+([^\s]+)/ ) { |
|
if ( $responses->[0][-1]=~ /^([\d\.\,\s\$]*(?:(?:[xX\*]10[\^\*]*|[eE]*)[\+\-]*\d*)*(?:^|\S)\d+)([\$\s\w\^\*\/\(\)\+\-]*[^\d\.\s\,][\$\s\w\^\*\/\(\)\+\-]*)$/ ) { |
$responses->[0][-1]=$1; |
$responses->[0][-1]=$1; |
$unit=$2; |
$unit=&capa_formula_fix($2); |
|
&LONCAPA_INTERNAL_DEBUG("Found unit :$unit:"); |
} |
} |
} |
} |
&LONCAPA_INTERNAL_DEBUG("Final final response :$responses->[0][-1]:$unit:"); |
&LONCAPA_INTERNAL_DEBUG("Final final response :$responses->[0][-1]:$unit:"); |
$unit=~s/\s//; |
$unit=~s/\s//; |
if ($unit ne '') { |
foreach my $response (@$responses) { |
foreach my $response (@$responses) { |
foreach my $element (@$response) { |
foreach my $element (@$response) { |
$element =~ s/\s//g; |
$element .= " $unit"; |
my $appendunit=$unit; |
} |
if ($unit=~/\%/) { |
} |
$element=$element/100; |
|
$appendunit=~s/\%//; |
|
} |
|
if (($element==0) && ($unit!~/\w/) && ($answerunit=~/\w/)) { |
|
$appendunit=$answerunit; |
|
} |
|
$element .= " $appendunit"; |
|
&LONCAPA_INTERNAL_DEBUG("Made response element :$element:"); |
|
} |
} |
} |
|
|
foreach my $thisanswer (@{ $LONCAPA::CAPAresponse_answer->{'answers'} }) { |
foreach my $thisanswer (@{ $LONCAPA::CAPAresponse_answer->{'answers'} }) { |