home *** CD-ROM | disk | FTP | other *** search
- #include "stdio.h"
- #include "lrnref"
-
- dounit()
- {
- char tbuff[100];
-
- if (todo == 0)
- return;
- wrong = 0;
- retry:
- start(todo);
- sprintf(tbuff, "../../%s/L%s", sname, todo); /* script = lesson */
- scrin = fopen(tbuff, "r");
- if (scrin == NULL) {
- fprintf(stderr, "No script.\n");
- wrapup(1);
- }
-
- copy(0, scrin);
- if (more == 0)
- return;
- copy(1, stdin);
- if (more == 0)
- return;
- copy(0, scrin);
-
- if (comfile >= 0)
- close(comfile);
- wait(&didok);
- didok = (status == 0);
- if (!didok) {
- wrong++;
- printf("\nSorry, that's %snot right. Do you want to try again? ",
- wrong > 1 ? "still " : "");
- fflush(stdout);
- for(;;) {
- gets(tbuff);
- if (tbuff[0] == 'y') {
- printf("Try the problem again.\n");
- fflush(stdout);
- goto retry;
- } else if (strcmp(tbuff, "bye") == 0) {
- wrapup(1);
- } else if (tbuff[0] == 'n') {
- wrong = 0;
- printf("\nOK. Lesson %s (%d)\n", todo, speed);
- printf("Skipping to next lesson.\n\n");
- fflush(stdout);
- break;
- } else {
- printf("Please type yes, no or bye: ");
- fflush(stdout);
- }
- }
- }
- setdid(todo, sequence++);
- }
-
-