version 1.89, 2004/10/05 20:30:17
|
version 1.91, 2004/10/21 02:43:34
|
Line 34 $rad2deg=180.0/$pi;
|
Line 34 $rad2deg=180.0/$pi;
|
$deg2rad=$pi/180.0; |
$deg2rad=$pi/180.0; |
$"=' '; |
$"=' '; |
|
|
|
sub check_commas { |
|
my ($response)=@_; |
|
#print("$response "); |
|
my @numbers=split(',',$response); |
|
#print(" numbers ".join('-',@numbers)." "); |
|
if (scalar(@numbers) > 1) { |
|
#print(" numbers[0] ".$numbers[0]." "); |
|
if (length($numbers[0]) > 3 || length($numbers[0]) == 0) { return -1; } |
|
shift(@numbers); |
|
#print(" numbers ".scalar(@numbers)." "); |
|
while (scalar(@numbers) > 1) { |
|
#print(" numbers ".join('-',@numbers)." "); |
|
if (length($numbers[0]) != 3) { return -2; } |
|
shift(@numbers); |
|
} |
|
my ($number)=split('\.',$numbers[0]); |
|
#print(" number ".$number." "); |
|
#print(" numbers[0] ".$numbers[0]." "); |
|
if (length($number) != 3) { return -3; } |
|
} else { |
|
my ($number)=split('\.',$numbers[0]); |
|
if (length($number) > 3) { return -4; } |
|
} |
|
return 1; |
|
} |
|
|
sub caparesponse_check { |
sub caparesponse_check { |
my ($answer,$response)=@_; |
my ($answer,$response)=@_; |
#not properly used yet: calc |
#not properly used yet: calc |
Line 69 sub caparesponse_check {
|
Line 95 sub caparesponse_check {
|
$answer=~s/ +/ /g; |
$answer=~s/ +/ /g; |
$response=~s/ +/ /g; |
$response=~s/ +/ /g; |
} |
} |
if ($type eq 'float') { $response=~s/,//g; } |
if ($type eq 'float' && $unit=~/\$/) { |
if ($type eq 'float' && $ans_fmt=~/\$/) { |
|
if ($response!~/^\$/) { return "NO_UNIT: Missing \$ "; } |
if ($response!~/^\$/) { return "NO_UNIT: Missing \$ "; } |
$response=~s/\$//g; |
$response=~s/\$//g; |
} |
} |
|
if ($type eq 'float' && $unit=~/\,/ && (&check_commas($response)<0)) { |
|
return "COMMA_FAIL:"; |
|
} |
$ans_fmt=~s/\W//g; |
$ans_fmt=~s/\W//g; |
|
$unit=~s/[\$,]//g; |
|
if ($type eq 'float') { $response=~s/,//g; } |
|
|
if (length($response) > 500) { return "TOO_LONG: Answer too long"; } |
if (length($response) > 500) { return "TOO_LONG: Answer too long"; } |
|
|
Line 514 sub chemparse {
|
Line 544 sub chemparse {
|
} |
} |
next; |
next; |
} |
} |
$token =~ /^\s*(\d*)(.*)/; |
$token =~ /^\s*(\d*(?:&frac\d\d)?)(.*)/; |
$formula .= $1 if ($1 > 1); # stoichiometric coefficient |
$formula .= $1 if ($1 ne '1'); # stoichiometric coefficient |
|
|
my $molecule = $2; |
my $molecule = $2; |
# subscripts |
# subscripts |