Annotation of capa/capa51/GUITools/answers.c, revision 1.1.1.1
1.1 albertel 1: /* ======================================================================== */
2: /* Feb. 10 1997 Isaac Tsai */
3: /* ======================================================================== */
4:
5: #ifdef NeXT
6: #include <stdlib.h>
7: #include <sys/types.h>
8: #include <sys/stat.h>
9: #include <bsd/curses.h>
10: #else
11: #include <curses.h>
12: #include <malloc.h>
13: double atof();
14: #endif
15:
16: #include <stdio.h>
17: #include <ctype.h>
18: #include <sys/types.h>
19: #include <sys/stat.h>
20: #include <signal.h>
21: #include <time.h>
22: #include <math.h>
23: #include <string.h>
24:
25:
26: #define YES 1
27:
28: #include "Capa/capaCommon.h"
29:
30: char *progname;
31:
32:
33: void
34: print_answer(FILE *o_fp,int ans_cnt,char *ans,char *lower,char *upper,char *unit)
35: {
36: if (unit && (strlen(unit)>0))
37: if(ans_cnt==2) fprintf(o_fp,"ANS:%s %s %s %s\n",ans,lower,upper,unit);
38: else fprintf(o_fp,"ANS:%s %s\n",lower,unit);
39: else
40: if(ans_cnt==2) fprintf(o_fp,"ANS:%s %s %s\n",ans,lower,upper);
41: else fprintf(o_fp,"ANS:%s\n",lower);
42: }
43:
44: void print_question (FILE *o_fp,char *question)
45: {
46: fprintf(o_fp,"BQES:\n%s\nEQES:\n",question);
47: }
48:
49: int main (int argc, char **argv)
50: {
51: extern int Parsemode_f;
52:
53: Problem_t *first_prob,*p;
54: int q_cnt, num_answers, result, setIdx = 1, q_idx;
55: char lower[ANSWER_STRING_LENG], upper[ANSWER_STRING_LENG];
56: int StartSet = 1, EndSet = 1;
57: char tmp_str[ANSWER_STRING_LENG];
58: double tmp_ans;
59: T_student a_student;
60:
61: Parsemode_f=ASCII_MODE;
62: if ( argc > 6 || argc < 5 ) {
63: printf("USAGE: %s StudentNumber StudentName Section startSet [endSet]\n",argv[0]);
64: exit(-1);
65: }
66: strncpy(a_student.s_sn,argv[1],MAX_STUDENT_NUMBER);
67: a_student.s_sn[MAX_STUDENT_NUMBER]='\0';
68: strncpy(a_student.s_nm,argv[2],MAX_NAME_CHAR);
69: a_student.s_nm[MAX_NAME_CHAR]='\0';
70: a_student.s_sec=atoi(argv[3]);
71:
72: StartSet=atoi(argv[4]);
73: if ( argc == 6 ) {
74: EndSet=atoi(argv[5]);
75: } else {
76: EndSet=StartSet;
77: }
78: for(setIdx=StartSet; setIdx <= EndSet; setIdx++) {
79: printf("SET:%d\n",setIdx);
80: result = capa_parse_student(setIdx, &first_prob, &a_student,&q_cnt,NULL);
81: printf("\n");
82: if ( result > 0 ) {
83: p = first_prob;
84: for( q_idx = 0; q_idx < q_cnt; q_idx++ ) {
85: print_question(stdout,p->question);
86: if( p->ans_type == ANSWER_IS_SUBJECTIVE) {
87: printf("ANS: Subjective Answers\n");
88: } else {
89: if( p->ans_type == ANSWER_IS_FLOAT ) {
90: tmp_ans = (double)atof(p->answer);
91: sprintf(tmp_str, p->ans_fmt, tmp_ans);
92: } else {
93: strcpy(tmp_str,p->answer);
94: }
95:
96: num_answers = calc_ansrange(p->ans_type, p->calc, p->answer, p->ans_fmt,
97: p->tol_type, p->tolerance, lower, upper);
98: print_answer(stdout,num_answers,tmp_str,lower,upper,p->unit_str);
99: }
100: p = p->next;
101: }
102: } else {
103: printf("ERROR:for %s set %d\n",a_student.s_sn,setIdx);
104: }
105: free_problems(first_prob);
106: if( setIdx < EndSet ) {
107: printf("\n");
108: }
109: }
110: printf("\nDONE:%s\n",a_student.s_sn);
111: return (0);
112: }
113:
114:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>