[LON-CAPA-cvs] cvs: capa /capa51/pProj capaCommon.c

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 26 Jun 2002 17:26:09 -0000


albertel		Wed Jun 26 13:26:09 2002 EDT

  Modified files:              
    /capa/capa51/pProj	capaCommon.c 
  Log:
  - fixes BUG#544
  
  
Index: capa/capa51/pProj/capaCommon.c
diff -u capa/capa51/pProj/capaCommon.c:1.20 capa/capa51/pProj/capaCommon.c:1.21
--- capa/capa51/pProj/capaCommon.c:1.20	Fri Dec 21 15:25:40 2001
+++ capa/capa51/pProj/capaCommon.c	Wed Jun 26 13:26:09 2002
@@ -2921,7 +2921,7 @@
   int      sig, corr_len;
   int      choice[ANSWER_STRING_LENG];
   char     num_str[ANSWER_STRING_LENG], unit_str[ANSWER_STRING_LENG];
-  char     fmted[ANSWER_STRING_LENG], correct[ANSWER_STRING_LENG], answer[ANSWER_STRING_LENG];
+  char     fmted[ANSWER_STRING_LENG], correctans[ANSWER_STRING_LENG], answer[ANSWER_STRING_LENG];
   double   n_part;
   double   given, target, ratio, fmted_target, target_u, target_l, scale=1.0;
   double   delta;
@@ -3020,14 +3020,18 @@
           {
             corr_len = strlen(s); input_len = strlen(ans);
             if( corr_len == input_len ) {
-              for(idx=0;idx<ANSWER_STRING_LENG;idx++) choice[idx] = 0;
+              for(idx=0;idx<ANSWER_STRING_LENG;idx++) {
+		choice[idx] = 0;correctans[idx] = 0;
+	      }
               result = EXACT_ANS;
               for(ii=0;ii<corr_len; ii++) {
                 idx = toupper(s[ii]) - 'A'; choice[idx] =  1;
               }
               for(ii=0;ii<input_len;ii++) {
-                idx = toupper(ans[ii]) - 'A';
-                if(choice[idx] != 1 )  result = INCORRECT;
+                idx = toupper(ans[ii]) - 'A'; correctans[idx] = 1;
+	      }
+	      for(ii=0;ii<ANSWER_STRING_LENG;ii++) {
+		if(choice[ii] != correctans[ii] )  result = INCORRECT;
               }
             } else { result = INCORRECT; }
             break;
@@ -3077,7 +3081,8 @@
   int     sig_l; 
   int     sig_u;
   char   *fmt;
-  int     choice[ANSWER_STRING_LENG], ii, idx, corr_len, input_len;
+  int     choice[ANSWER_STRING_LENG], correctans[ANSWER_STRING_LENG];
+  int     ii, idx, corr_len, input_len;
   int     result = INCORRECT, sig, outcome, all_alphabet;
   char    fmted[FORMAT_STRING_LENG];
   double  given, target, ratio, fmted_target, target_u, target_l, scale=1.0;
@@ -3181,13 +3186,18 @@
           {
             corr_len = strlen(correct); input_len = strlen(answer);
             if( corr_len == input_len ) {
-              for(ii=0;ii<ANSWER_STRING_LENG;ii++) choice[ii] = 0;  result = EXACT_ANS;
+              for(idx=0;idx<ANSWER_STRING_LENG;idx++) {
+		choice[idx] = 0;correctans[idx] = 0;
+	      }
+              result = EXACT_ANS;
               for(ii=0;ii<corr_len; ii++) {
                 idx = toupper(correct[ii]) - 'A'; choice[idx] =  1;
               }
               for(ii=0;ii<input_len;ii++) {
-                idx = toupper(answer[ii]) - 'A';
-                if(choice[idx] != 1 )  result = INCORRECT;
+                idx = toupper(answer[ii]) - 'A'; correctans[idx] = 1;
+	      }
+	      for(ii=0;ii<ANSWER_STRING_LENG;ii++) {
+		if(choice[ii] != correctans[ii] )  result = INCORRECT;
               }
             } else { result = INCORRECT; }
             break;