File:  [LON-CAPA] / capa / capa51 / GUITools / answers.c
Revision 1.4: download - view: text, annotated - select for diffs
Wed Jul 12 15:57:08 2000 UTC (23 years, 10 months ago) by albertel
Branches: MAIN
CVS tags: version5-1-2-first_release, HEAD
- finished up GPL notices

    1: /* print out the set in a easily parsed format
    2:    Copyright (C) 1992-2000 Michigan State University
    3: 
    4:    The CAPA system is free software; you can redistribute it and/or
    5:    modify it under the terms of the GNU Library General Public License as
    6:    published by the Free Software Foundation; either version 2 of the
    7:    License, or (at your option) any later version.
    8: 
    9:    The CAPA system is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   12:    Library General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU Library General Public
   15:    License along with the CAPA system; see the file COPYING.  If not,
   16:    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   17:    Boston, MA 02111-1307, USA.
   18: 
   19:    As a special exception, you have permission to link this program
   20:    with the TtH/TtM library and distribute executables, as long as you
   21:    follow the requirements of the GNU GPL in regard to all of the
   22:    software in the executable aside from TtH/TtM.
   23: */
   24: /* ======================================================================== */
   25: /*       Feb. 10 1997   Isaac Tsai                                          */
   26: /* ======================================================================== */
   27: 
   28: #ifdef NeXT
   29: #include <stdlib.h>
   30: #include <sys/types.h>
   31: #include <sys/stat.h>  
   32: #include <bsd/curses.h>
   33: #else
   34: #include <curses.h>
   35: #include <malloc.h>
   36: double atof();
   37: #endif
   38: 
   39: #include <stdio.h>
   40: #include <ctype.h>
   41: #include <sys/types.h>
   42: #include <sys/stat.h>  
   43: #include <signal.h>
   44: #include <time.h>
   45: #include <math.h>
   46: #include <string.h>
   47: 
   48: 
   49: #define   YES    1
   50: 
   51: #include "Capa/capaCommon.h"
   52: 
   53: char    *progname;
   54: 
   55: 
   56: void
   57: print_answer(FILE *o_fp,int ans_cnt,char *ans,char *lower,char *upper,char *unit)
   58: {
   59:   if (unit && (strlen(unit)>0)) 
   60:     if(ans_cnt==2)  fprintf(o_fp,"ANS:%s %s %s %s\n",ans,lower,upper,unit); 
   61:     else  fprintf(o_fp,"ANS:%s %s\n",lower,unit);
   62:   else 
   63:     if(ans_cnt==2)  fprintf(o_fp,"ANS:%s %s %s\n",ans,lower,upper); 
   64:     else  fprintf(o_fp,"ANS:%s\n",lower);
   65: }
   66: 
   67: void print_question (FILE *o_fp,char *question)
   68: {
   69:   fprintf(o_fp,"BQES:\n%s\nEQES:\n",question);
   70: }
   71: 
   72: int main (int argc, char  **argv) 
   73: {
   74:   extern  int        Parsemode_f;
   75:   extern  int        managermode;
   76: 
   77:   Problem_t  *first_prob,*p;
   78:   int         q_cnt, num_answers, result, setIdx = 1, q_idx;
   79:   char        lower[ANSWER_STRING_LENG], upper[ANSWER_STRING_LENG];
   80:   int         StartSet = 1, EndSet = 1;
   81:   char        tmp_str[ANSWER_STRING_LENG];
   82:   double      tmp_ans;
   83:   T_student   a_student;
   84: 
   85:   Parsemode_f=ASCII_MODE;
   86:   if ( argc > 6 || argc < 5 ) {
   87:     printf("USAGE: %s StudentNumber StudentName ?managermode? startSet [endSet]\n",
   88: 	   argv[0]);
   89:     printf("CAPA is licensed under the GNU GPL v2, see COPYING for details.\n");
   90:     exit(-1);
   91:   }
   92:   strncpy(a_student.s_sn,argv[1],MAX_STUDENT_NUMBER);
   93:   a_student.s_sn[MAX_STUDENT_NUMBER]='\0';
   94:   strncpy(a_student.s_nm,argv[2],MAX_NAME_CHAR);
   95:   a_student.s_nm[MAX_NAME_CHAR]='\0';
   96:   managermode=atoi(argv[3]);
   97:   
   98:   StartSet=atoi(argv[4]);
   99:   if ( argc == 6 ) {
  100:     EndSet=atoi(argv[5]);
  101:   } else {
  102:     EndSet=StartSet;
  103:   }
  104:   for(setIdx=StartSet; setIdx <= EndSet; setIdx++) {
  105:     printf("SET:%d\n",setIdx);
  106:     result = capa_parse_student(setIdx, &first_prob, &a_student,&q_cnt,NULL);
  107:     printf("\n");
  108:     if ( result > 0 ) { 
  109:       p = first_prob;
  110:       for( q_idx = 0; q_idx < q_cnt; q_idx++ ) {
  111: 	print_question(stdout,p->question);
  112: 	if( p->ans_type == ANSWER_IS_SUBJECTIVE) {
  113: 	  printf("ANS: Subjective Answers\n");
  114: 	} else {
  115: 	  if( p->ans_type == ANSWER_IS_FLOAT ) {
  116: 	    tmp_ans = (double)atof(p->answer);
  117: 	    sprintf(tmp_str, p->ans_fmt, tmp_ans);
  118: 	  } else {
  119: 	    strcpy(tmp_str,p->answer);
  120: 	  }
  121: 
  122: 	  num_answers = calc_ansrange(p->ans_type, p->calc, p->answer, p->ans_fmt,
  123: 				      p->tol_type, p->tolerance, lower, upper);
  124: 	  print_answer(stdout,num_answers,tmp_str,lower,upper,p->unit_str);
  125: 	}
  126: 	p = p->next;
  127:       }
  128:     } else {
  129:       printf("ERROR:for %s set %d\n",a_student.s_sn,setIdx);
  130:     }
  131:     free_problems(first_prob);
  132:     if( setIdx < EndSet ) { 
  133:       printf("\n"); 
  134:     }
  135:   }
  136:   printf("\nDONE:%s\n",a_student.s_sn);
  137:   return (0);
  138: }
  139: 
  140: 

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