--- loncom/homework/caparesponse/caparesponse.c 2004/11/16 23:37:40 1.14 +++ loncom/homework/caparesponse/caparesponse.c 2005/02/15 22:15:05 1.17 @@ -1,6 +1,6 @@ /* The LearningOnline Network with CAPA * CAPA wrapper code - * $Id: caparesponse.c,v 1.14 2004/11/16 23:37:40 albertel Exp $ + * $Id: caparesponse.c,v 1.17 2005/02/15 22:15:05 albertel Exp $ * * Copyright Michigan State University Board of Trustees * @@ -110,7 +110,10 @@ int caparesponse_capa_check_answer(char } if (unit_str != NULL && unit_str[0]!='\0') { strncpy(p.unit_str,unit_str,ANSWER_STRING_LENG-1); - p.ans_unit = u_parse_unit(unit_str); + //p.ans_unit = u_parse_unit(unit_str); + p.ans_unit = parse_unit_expr(unit_str); + p.ans_unit = process_utree(p.ans_unit); + //print_unit_t(p.ans_unit); } else { p.unit_str[0]='\0'; p.ans_unit=NULL; @@ -130,7 +133,8 @@ int caparesponse_get_real_response (char //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; - char input[ANSWER_STRING_LENG],filename[FILE_NAME_LENGTH]; + char input[ANSWER_STRING_LENG],filename[FILE_NAME_LENGTH], + tmp_unit_str[ANSWER_STRING_LENG]; Unit_t *ans_unit; long seed1,seed2; FILE *fp; @@ -143,7 +147,8 @@ int caparesponse_get_real_response (char fclose(fp); if (unit_str != NULL && unit_str[0]!='\0') { - ans_unit = u_parse_unit(unit_str); + ans_unit = parse_unit_expr(unit_str); + ans_unit = process_utree(ans_unit); } else { ans_unit=NULL; } @@ -155,10 +160,11 @@ int caparesponse_get_real_response (char } } if( !all_alphabet ) { - outcome = split_num_unit(answer,&n_part,input,unit_str); + tmp_unit_str[0]=NULL; + outcome = split_num_unit(answer,&n_part,input,tmp_unit_str); if( outcome > 1 ) { /* with both num and unit parts or only unit part */ if( ans_unit != NULL ) { - result = check_correct_unit(unit_str,ans_unit,&scale); + result = check_correct_unit(tmp_unit_str,ans_unit,&scale); } else { /* what to do when no unit is specified but student entered a unit? */ result = UNIT_NOTNEEDED;