version 1.139, 2008/09/12 09:56:09
|
version 1.144, 2009/04/17 01:00:15
|
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') || ($type eq '8')) { |
|
if ($response=~/\=/) { |
|
return ('BAD_FORMULA','Please submit just an expression, not an equation.'); |
|
} elsif ($response =~ /\,/ and $response !~ /^\s*\{.*\}\s*$/) { |
|
return ('BAD_FORMULA'); |
|
} |
|
} |
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 265 sub caparesponse_check {
|
|
|
|
|
sub caparesponse_check_list { |
sub caparesponse_check_list { |
my ($tag) = @_; |
|
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
my $responses=$LONCAPA::CAPAresponse_args{'response'}; |
&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'}; |
Line 304 sub caparesponse_check_list {
|
Line 309 sub caparesponse_check_list {
|
|
|
&LONCAPA_INTERNAL_DEBUG("Initial final response :$responses->[0][-1]:"); |
&LONCAPA_INTERNAL_DEBUG("Initial final response :$responses->[0][-1]:"); |
my $unit; |
my $unit; |
if (($type eq 'float') || (($type eq '') && (($tag ne 'stringresponse') && ($tag ne 'stringhint')) ) ) { |
if ($type eq 'float' || $type eq '') { |
#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\^\*\/\(\)\+\-]*)$/ ) { |
if ( $responses->[0][-1]=~ /^([\d\.\,\s\$]*(?:(?:[xX\*]10[\^\*]*|[eE]*)[\+\-]*\d*)*(?:^|\S)\d+)([\$\s\w\^\*\/\(\)\+\-]*[^\d\.\s\,][\$\s\w\^\*\/\(\)\+\-]*)$/ ) { |
Line 321 sub caparesponse_check_list {
|
Line 326 sub caparesponse_check_list {
|
$element =~ s/\s//g; |
$element =~ s/\s//g; |
} |
} |
my $appendunit=$unit; |
my $appendunit=$unit; |
if ($unit=~/\%/) { |
if (($unit=~/\%/) && ($answerunit ne '%')) { |
$element=$element/100; |
$element=$element/100; |
$appendunit=~s/\%//; |
$appendunit=~s/\%//; |
} |
} |
Line 431 sub cas {
|
Line 436 sub cas {
|
my $output; |
my $output; |
if ($system eq 'maxima') { |
if ($system eq 'maxima') { |
$output=&maxima_eval($input,$library); |
$output=&maxima_eval($input,$library); |
|
} elsif ($system eq 'R') { |
|
$output=&r_eval($input,$library); |
} else { |
} else { |
$output='Error: unrecognized CAS'; |
$output='Error: unrecognized CAS'; |
} |
} |