--- loncom/homework/caparesponse/caparesponse.c 2005/11/07 23:37:39 1.18 +++ loncom/homework/caparesponse/caparesponse.c 2024/04/29 00:34:55 1.23 @@ -1,6 +1,6 @@ /* The LearningOnline Network with CAPA * CAPA wrapper code - * $Id: caparesponse.c,v 1.18 2005/11/07 23:37:39 albertel Exp $ + * $Id: caparesponse.c,v 1.23 2024/04/29 00:34:55 raeburn Exp $ * * Copyright Michigan State University Board of Trustees * @@ -27,6 +27,7 @@ #include #include +#include /* isdigit() */ PointsList_t * parse_pts_list (char *pts_list) { PointsList_t *new=NULL, *end=NULL, *beforeend=NULL, *rlist=NULL; @@ -97,9 +98,9 @@ int caparesponse_capa_check_answer(char if (type == ANSWER_IS_FORMULA) { p.id_list=id_list; p.pts_list=parse_pts_list(pts_list); - if ( p.id_list == NULL || p.pts_list == NULL) { - return BAD_FORMULA; - } +// if ( p.id_list == NULL || p.pts_list == NULL) { +// return BAD_FORMULA; +// } } p.ans_type = type; p.answer = correct; @@ -134,12 +135,11 @@ int caparesponse_capa_check_answer(char int caparesponse_get_real_response (char* unit_str, char* answer, double* scaled) { //double caparesponse_get_real_response (char* unit_str, char* answer) { - int input_len,all_alphabet,idx,outcome,result; - double n_part,scale=1.0,given,target; + int input_len,all_alphabet,idx,outcome=-1,result; + ouble n_part,scale=1.0,given; char input[ANSWER_STRING_LENG],filename[FILE_NAME_LENGTH], tmp_unit_str[ANSWER_STRING_LENG]; Unit_t *ans_unit; - long seed1,seed2; FILE *fp; sprintf(filename,"/home/httpd/html/res/adm/includes/capa.units"); if ((fp=fopen(filename,"r"))==NULL) { @@ -163,8 +163,10 @@ int caparesponse_get_real_response (char } } if( !all_alphabet ) { - tmp_unit_str[0]=NULL; + tmp_unit_str[0] = 0; outcome = split_num_unit(answer,&n_part,input,tmp_unit_str); + } + if( outcome > 0 ) { if( outcome > 1 ) { /* with both num and unit parts or only unit part */ if( ans_unit != NULL ) { result = check_correct_unit(tmp_unit_str,ans_unit,&scale); @@ -182,9 +184,24 @@ int caparesponse_get_real_response (char *scaled=given; /* convert the given answer into proper scale for units */ } /* end if unit check */ - } else { /* user entered a -lphabet, but no number */ + } else { /* user entered alphabet, but no number */ result = WANTED_NUMERIC; } return result; } + +/* Testing harness +int main(void) { + int result=0; + char *reterror=NULL; + result= caparesponse_capa_check_answer("10^3","1000", + ANSWER_IS_FORMULA, + TOL_ABSOLUTE,1E-3, + 3,5,NULL,NULL, + CALC_UNFORMATED, + "","4", + "rndseed", + &reterror); + fprintf(stderr,"result %d\nreterror: %s\n",result,reterror); +} +*/