|
Chilavert
admin
    

Regione: Puglia
Prov.: BA
Città: Bari
|
Inserito il - 28/06/2004 : 18:16:45
|
Ho archiviato l'altra discussione perché non mi sembrava giusto dare agli studenti uno scanner che aveva erroretti qua e là... guardate questo e poi mi dite:
#include <ctype.h> #include <stdio.h> #include <stdlib.h>
#define MAXTOKEN 256
enum STATI {P, q0, q1, q2, q3, F}; //P: stato pozza!
int main() { int i, n; int stato; char token[MAXTOKEN+1]; char risp; do { stato = q0; system("CLS"); fflush(stdin); printf("Inserisci il token da analizzare: "); gets(token); printf("%s\n",token); n = strlen(token); for(i = 0; i < n; i++) switch (stato) { case q0: if (isspace(token[i])) stato = q0; else if (token[i] == '/') stato = q1; else stato = P; break; case q1: if (token[i] == '*') stato = q2; else stato = P; break; case q2: if (token[i] != '*') stato = q2; else stato = q3; break; case q3: if (token[i] == '*') stato = q3; else if ((token[i] != '/') && (token[i] != '*')) stato = q2; else if (token[i] == '/') stato = F; break; case F: if (isspace(token[i])) stato = F; else if (token[i] != '\0') stato = P; break; } if (stato == F) printf("Token %s esatto!\n\n", token); else printf("Token %s errato!\n\n", token); do { printf("Si desidera analizzare un altro token? (S/N) "); scanf("%s",&risp); } while ((risp != 'S') && (risp != 's') && (risp != 'N') && (risp != 'n')); } while ((risp == 'S') || (risp == 's')); return(0); }
PS: per coloro i quali si sentono un po' a disagio con le istruzioni gets e fflush, non vi preoccupate... forse non è un metodo elegante, ma per l'esame di linguaggi basta ed avanza (spero) Ecco il listato (per i soliti problemi di perdita d'indentazione): commenti.txt
|
E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare. Pensa a studiare e non agli esempi, o ad altre strade per così dire, che questa volta mi sa che non attacca. [cit.]
Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.] |
|