Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Linguaggi di programmazione
 Ok, stavolta è la versione buona...
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

Chilavert
admin

vacca


Regione: Puglia
Prov.: BA
Città: Bari


Inserito il - 28/06/2004 : 18:16:45  Mostra Profilo  Visita l'Homepage di Chilavert Invia a Chilavert un Messaggio Privato  Rispondi Quotando
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.]
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,23 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000