version 1.107, 2006/06/13 14:57:54
|
version 1.110, 2006/07/17 21:11:21
|
Line 152 sub caparesponse_check {
|
Line 152 sub caparesponse_check {
|
my $reterror=""; |
my $reterror=""; |
my $result; |
my $result; |
if ($type eq '9') { |
if ($type eq '9') { |
$result = &maxima_check($response,$answer,\$reterror); |
$result = &maxima_check(&maxima_cas_formula_fix($response),&maxima_cas_formula_fix($answer),\$reterror); |
} else { |
} else { |
|
if ($type eq '8') { # fml type |
|
$response = &capa_formula_fix($response); |
|
$answer = &capa_formula_fix($answer); |
|
} |
$result = &caparesponse_capa_check_answer($response,$answer,$type, |
$result = &caparesponse_capa_check_answer($response,$answer,$type, |
$tol_type,$tol, |
$tol_type,$tol, |
$sig_lbound,$sig_ubound, |
$sig_lbound,$sig_ubound, |
Line 184 sub caparesponse_check {
|
Line 188 sub caparesponse_check {
|
return ("$result:\nRetError $reterror:\nAnswer $answer:\nResponse $response:\n type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|\n$message",$reterror); |
return ("$result:\nRetError $reterror:\nAnswer $answer:\nResponse $response:\n type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|\n$message",$reterror); |
} |
} |
|
|
|
sub maxima_cas_formula_fix { |
|
my ($expression)=@_; |
|
return &implicit_multiplication($expression); |
|
} |
|
|
|
sub capa_formula_fix { |
|
my ($expression)=@_; |
|
return &implicit_multiplication($expression); |
|
} |
|
|
|
sub implicit_multiplication { |
|
my ($expression)=@_; |
|
$expression=~s/(\d+)e([\+\-]*\d+)/$1\&\($2\)/gsi; |
|
$expression=~s/(\d+)(?:x|\*)10(?:\^|\*\*)([\+\-]*\d+)/$1\&\($2\)/gsi; |
|
$expression=~s/\s+/\*/gs; |
|
$expression=~s/(\d)([a-zA-Z\(])/$1\*$2/gs; |
|
$expression=~s/([a-zA-Z])(\d)/$1\*$2/gs; |
|
$expression=~s/\)(\w)/\)\*$1/gs; |
|
$expression=~s/(\d+)\&\(([\+\-]*\d+)\)/$1e$2/gs; |
|
return $expression; |
|
} |
|
|
sub caparesponse_check_list { |
sub caparesponse_check_list { |
my $response=$LONCAPA::CAPAresponse_args{'response'}; |
my $response=$LONCAPA::CAPAresponse_args{'response'}; |