--- loncom/homework/default_homework.lcpm 2008/06/12 00:46:52 1.136 +++ loncom/homework/default_homework.lcpm 2008/09/12 09:56:09 1.139 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # used by lonxml::xmlparse() as input variable $safeinit to Apache::run::run() # -# $Id: default_homework.lcpm,v 1.136 2008/06/12 00:46:52 www Exp $ +# $Id: default_homework.lcpm,v 1.139 2008/09/12 09:56:09 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -254,11 +254,12 @@ sub caparesponse_check { &LONCAPA_INTERNAL_DEBUG("RetError $reterror: Answer $answer: Response $response: type-$type|$tol|$tol_type|$sig:$sig_lbound:$sig_ubound|$unit|"); &LONCAPA_INTERNAL_DEBUG(" $answer $response $result "); - return ($result,$reterror) + return ($result,$reterror); } sub caparesponse_check_list { + my ($tag) = @_; my $responses=$LONCAPA::CAPAresponse_args{'response'}; &LONCAPA_INTERNAL_DEBUG("args ".join(':',%LONCAPA::CAPAresponse_args)); my $type = $LONCAPA::CAPAresponse_args{'type'}; @@ -303,7 +304,7 @@ sub caparesponse_check_list { &LONCAPA_INTERNAL_DEBUG("Initial final response :$responses->[0][-1]:"); my $unit; - if ($type eq '' || $type eq 'float') { + if (($type eq 'float') || (($type eq '') && (($tag ne 'stringresponse') && ($tag ne 'stringhint')) ) ) { #for numerical problems split off the unit # 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\^\*\/\(\)\+\-]*)$/ ) { @@ -316,7 +317,9 @@ sub caparesponse_check_list { $unit=~s/\s//; foreach my $response (@$responses) { foreach my $element (@$response) { - $element =~ s/\s//g; + if (($type eq 'float') || (($type eq '') && ($unit ne ''))) { + $element =~ s/\s//g; + } my $appendunit=$unit; if ($unit=~/\%/) { $element=$element/100; @@ -424,10 +427,12 @@ sub caparesponse_check_list { } sub cas { - my ($system,$input)=@_; + my ($system,$input,$library)=@_; my $output; if ($system eq 'maxima') { - $output=&maxima_eval($input); + $output=&maxima_eval($input,$library); + } else { + $output='Error: unrecognized CAS'; } return $output; }