Diff for /loncom/homework/caparesponse/caparesponse.c between versions 1.8 and 1.16

version 1.8, 2003/05/27 15:29:02 version 1.16, 2004/12/23 18:36:42
Line 68  int caparesponse_capa_check_answer(char Line 68  int caparesponse_capa_check_answer(char
    int sig_lbound,int sig_ubound,      int sig_lbound,int sig_ubound, 
    char *ans_fmt, char *unit_str,     char *ans_fmt, char *unit_str,
    int calc, char *id_list, char *pts_list,      int calc, char *id_list, char *pts_list, 
    char *rndseed)     char *rndseed, char** reterror)
         
 {  {
   long result,seed1,seed2;    long result,seed1,seed2;
Line 76  int caparesponse_capa_check_answer(char Line 76  int caparesponse_capa_check_answer(char
   char *error=NULL,filename[FILE_NAME_LENGTH];    char *error=NULL,filename[FILE_NAME_LENGTH];
   FILE *fp;    FILE *fp;
   
   /* eed to initialize unit parser*/    /* need to initialize unit parser*/
     *reterror=NULL;
   sprintf(filename,"/home/httpd/html/res/adm/includes/capa.units");    sprintf(filename,"/home/httpd/html/res/adm/includes/capa.units");
   if ((fp=fopen(filename,"r"))==NULL) {    if ((fp=fopen(filename,"r"))==NULL) {
     /* printf("Error: can't open %s\n",filename);*/      /* printf("Error: can't open %s\n",filename);*/
Line 112  int caparesponse_capa_check_answer(char Line 113  int caparesponse_capa_check_answer(char
     p.ans_unit   = u_parse_unit(unit_str);      p.ans_unit   = u_parse_unit(unit_str);
   } else {    } else {
     p.unit_str[0]='\0';      p.unit_str[0]='\0';
       p.ans_unit=NULL;
   }    }
   p.calc       = calc;    p.calc       = calc;
   
   result=capa_check_answer(&p,response,&error);    result=capa_check_answer(&p,response,&error);
     *reterror=error;
     // Caller is expected to free reterror
     //  if (error!=NULL) {free(error);}
   
   if (error!=NULL) {free(error);}    return result;
   }
   
   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;
     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) {
       /* printf("Error: can't open %s\n",filename);*/
       return (-1); 
     }
     u_getunit(fp);
     fclose(fp);
   
     if (unit_str != NULL && unit_str[0]!='\0') {
       ans_unit   = u_parse_unit(unit_str);
     } else {
       ans_unit=NULL;
     }
     input_len = strlen(answer);
     all_alphabet = 1;
     for(idx=0;idx<input_len;idx++) {
       if( isdigit(answer[idx]) ) {
         all_alphabet = 0;
       }
     }
     if( !all_alphabet ) {
       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(tmp_unit_str,ans_unit,&scale);
         } else {
    /* what to do when no unit is specified but student entered a unit? */
    result = UNIT_NOTNEEDED;
         }
       } else {
         if( ans_unit != NULL ) {
    result = NO_UNIT;
         }
       }
       if( (result != NO_UNIT) && (!check_for_unit_fail(result)) && ( result != UNIT_NOTNEEDED) ) {
         given = n_part * scale;
         *scaled=given;
         /* convert the given answer into proper scale for units */
       } /* end if unit check */
     } else { /* user entered a
   lphabet, but no number */
       result = WANTED_NUMERIC;
     } 
   return result;    return result;
 }  }

Removed from v.1.8  
changed lines
  Added in v.1.16


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>