version 1.3, 1999/11/08 22:30:02
|
version 1.6, 2000/07/07 18:33:03
|
Line 1
|
Line 1
|
/* Copyright 1992-1997 Michigan State University, Board of Trustee */ |
/* main code that implements the capa login shell |
|
Copyright (C) 1992-2000 Michigan State University |
|
|
|
The CAPA system is free software; you can redistribute it and/or |
|
modify it under the terms of the GNU Library General Public License as |
|
published by the Free Software Foundation; either version 2 of the |
|
License, or (at your option) any later version. |
|
|
|
The CAPA system is distributed in the hope that it will be useful, |
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
Library General Public License for more details. |
|
|
|
You should have received a copy of the GNU Library General Public |
|
License along with the CAPA system; see the file COPYING. If not, |
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
|
Boston, MA 02111-1307, USA. |
|
|
|
As a special exception, you have permission to link this program |
|
with the TtH/TtM library and distribute executables, as long as you |
|
follow the requirements of the GNU GPL in regard to all of the |
|
software in the executable aside from TtH/TtM. |
|
*/ |
|
|
/* version 4.6 */ |
/* version 4.6 */ |
|
|
/* Jan 28 1997 I.T. */ |
/* Jan 28 1997 I.T. */ |
Line 1142 int give_response(Problem_t *p,char **a
|
Line 1165 int give_response(Problem_t *p,char **a
|
{ |
{ |
int can_answer; |
int can_answer; |
char tmp_str[MAX_BUFFER_SIZE], *c_answer_str; |
char tmp_str[MAX_BUFFER_SIZE], *c_answer_str; |
|
char *error=NULL; |
|
|
|
switch( capa_check_answers(p,a,cnt,&error) ) { |
switch( capa_check_answers(p,a,cnt) ) { |
|
|
|
case EXACT_ANS: move(A_ROW,S_COL); clrtoeol(); |
case EXACT_ANS: move(A_ROW,S_COL); clrtoeol(); |
mvaddstr(A_ROW,S_COL,"*Yes Computer gets:"); |
mvaddstr(A_ROW,S_COL,"*Yes Computer gets:"); |
Line 1172 int give_response(Problem_t *p,char **a
|
Line 1195 int give_response(Problem_t *p,char **a
|
*log_char='Y'; can_answer=NAY; |
*log_char='Y'; can_answer=NAY; |
if(*tried < TRY_BOUND) (*tried)++; |
if(*tried < TRY_BOUND) (*tried)++; |
break; |
break; |
|
case WANTED_NUMERIC: move(S_ROW,S_COL); clrtoeol(); |
|
mvaddstr(S_ROW,S_COL,"*Enter a Number Ans"); |
|
*log_char='S'; can_answer=YAK; |
|
break; |
case SIG_FAIL: move(S_ROW,S_COL); clrtoeol(); |
case SIG_FAIL: move(S_ROW,S_COL); clrtoeol(); |
mvaddstr(S_ROW,S_COL,"*Adjust Sig. Figs. "); |
mvaddstr(S_ROW,S_COL,"*Adjust Sig. Figs. "); |
*log_char='S'; can_answer=YAK; |
*log_char='S'; can_answer=YAK; |
|
capa_mfree(error); |
break; |
break; |
case UNIT_FAIL: move(S_ROW,S_COL); clrtoeol(); |
case UNIT_FAIL: move(S_ROW,S_COL); clrtoeol(); |
mvaddstr(S_ROW,S_COL,"*Units incorrect "); |
mvaddstr(S_ROW,S_COL,"*Units incorrect "); |
*log_char='U'; can_answer=YAK; |
*log_char='U'; can_answer=YAK; |
|
capa_mfree(error); |
break; |
break; |
case UNIT_NOTNEEDED: move(S_ROW,S_COL); clrtoeol(); |
case UNIT_NOTNEEDED: move(S_ROW,S_COL); clrtoeol(); |
mvaddstr(S_ROW,S_COL,"*Only a number required"); |
mvaddstr(S_ROW,S_COL,"*Only a number required"); |
*log_char='U'; can_answer=YAK; |
*log_char='U'; can_answer=YAK; |
|
capa_mfree(error); |
break; |
break; |
case NO_UNIT: move(S_ROW,S_COL); clrtoeol(); |
case NO_UNIT: move(S_ROW,S_COL); clrtoeol(); |
mvaddstr(S_ROW,S_COL,"*Units required "); |
mvaddstr(S_ROW,S_COL,"*Units required "); |
Line 1227 int give_inhibited_response(Problem_t *
|
Line 1257 int give_inhibited_response(Problem_t *
|
{ |
{ |
int can_answer; |
int can_answer; |
char tmp_str[MAX_BUFFER_SIZE]; |
char tmp_str[MAX_BUFFER_SIZE]; |
|
char *error=NULL; |
|
|
|
switch( capa_check_answers(p,a,cnt,&error) ) { |
switch( capa_check_answers(p,a,cnt) ) { |
|
|
|
|
|
case EXACT_ANS: *log_char='Y'; break; |
case EXACT_ANS: *log_char='Y'; break; |
case APPROX_ANS: *log_char='Y'; break; |
case APPROX_ANS: *log_char='Y'; break; |
case SIG_FAIL: *log_char='S'; break; |
case SIG_FAIL: *log_char='S'; capa_mfree(error); break; |
case UNIT_FAIL: *log_char='U'; break; |
case UNIT_FAIL: *log_char='U'; capa_mfree(error); break; |
case UNIT_NOTNEEDED: *log_char='U'; break; |
case UNIT_NOTNEEDED: *log_char='U'; capa_mfree(error); break; |
case NO_UNIT: *log_char='u'; break; |
case NO_UNIT: *log_char='u'; break; |
case BAD_FORMULA:*log_char='F'; break; |
case BAD_FORMULA:*log_char='F'; break; |
case INCORRECT: *log_char='N'; break; |
case INCORRECT: *log_char='N'; break; |
|
case WANTED_NUMERIC: *log_char='s'; break; |
case ANS_CNT_NOT_MATCH: *log_char='C'; break; |
case ANS_CNT_NOT_MATCH: *log_char='C'; break; |
} |
} |
|
|