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
 Laboratorio 30/6 Le soluzioni
 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  

Kevin82
Nuovo Utente

TINMAN


Regione: Calabria
Prov.: Cosenza
Città: Rossano


Inserito il - 10/06/2005 : 18:17:27  Mostra Profilo  Visita l'Homepage di Kevin82 Invia a Kevin82 un Messaggio Privato  Rispondi Quotando
raga vi allego le soluzioni dei 3 quesiti che Lops e Colleghi vi hanno dato allo scorso appello di Linguaggi
Scusate il ritardo
Prova di laboratorio di Linguaggi di Programmazione [durata 60 min.]
Appello – 30 Maggio 2005 - A.A. 2004/05

Implementare in linguaggio C il seguente automa, definito sull’alfabeto X = A #61640; N #61640; {.}, dove A è l’insieme delle lettere minuscole ed N è l’insieme delle cifre decimali.








Modalità di consegna: Salvare il programma sorgente in una cartella sul desktop utilizzando come nome della cartella e del file sorgente il corso (A,B,C), cognome, nome e numero di matricola

Codice
#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 100

int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,Q5,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{
case Q0:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state =Q1;
else current_state = POZZA;
break;
case Q1:
if (s[i] >= '1' && s[i] <= '9')
current_state =Q2;
else if (s[i] == '.')
current_state = Q5;
else current_state = POZZA;

break;
case Q2:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q3;
else current_state=POZZA;
break;
case Q3:
if(s[i] >= '1' && s[i] <= '9')
current_state=Q4;
else current_state=POZZA;
break;
case Q4:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q1;
else current_state=POZZA;
break;
case Q5:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q5;
else current_state=POZZA;
break;

}
++i;
}
return (current_state ==Q5);
}



int main(int argc, char* argv[])
{
char buffer[MAX_LENGTH+1];
char* filename = argv[1];
FILE* file;

file = fopen(filename,"r");
if (file == NULL)
{
printf("file inesistente");
return -1;
}


while (!feof(file))
{
if (scan(fgets(buffer,MAX_LENGTH,file)))
printf("%s RICONOSCIUTO\n", buffer);
else
printf("%s NON RICONOSCIUTO\n", buffer);
}

fclose(file);
system("PAUSE");
return 0;
}

Codice funzione di scan
int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{

case Q0:
if (s[i] >= '1' && s[i] <= '9')
current_state =Q3;
else if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state = Q1;
else current_state = POZZA;

break;
case Q1:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q2;
else current_state=POZZA;
break;
case Q2:
if((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q0;
else current_state=POZZA;
break;
case Q3:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q4;
else current_state=POZZA;
break;
case Q4:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q0;
else current_state=POZZA;
break;

}
++i;
}
return (current_state ==Q0);
}



Prova di laboratorio di Linguaggi di Programmazione [durata 60 min.]
Appello – 30 Maggio 2005 - A.A. 2004/05

Implementare in linguaggio C il seguente automa, definito sull’alfabeto X = A #61640; N #61640; {@}, dove A è l’insieme delle lettere maiuscole ed N è l’insieme delle cifre ottali (le cifre comprese tra 0 e 7).





Modalità di consegna: Salvare il programma sorgente in una cartella sul desktop utilizzando come nome della cartella e del file sorgente il corso (A,B,C), cognome, nome e numero di matricola
(Esempio: lo studente Rossi Mario del corso C, matricola 999999, chiamerà cartella e file C_Rossi_Mario_999999).

Codice della funzione di scan
int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{

case Q0:
if (s[i] >= 'A' && s[i] <= 'Z')
current_state =Q1;
else current_state = POZZA;
break;
case Q1:
if (s[i] >= '0' && s[i] <= '7')
current_state =Q1;
else if (s[i]=='@') current_state=Q2 ;
else current_state = POZZA;
break;
case Q2:
if (s[i] >= 'A' && s[i] <= 'Z')
current_state =Q3;
else current_state = POZZA;
break;
case Q3:
if (s[i] >= '0' && s[i] <= '7')
current_state =Q3;
else current_state = POZZA;
break;

}
++i;
}
return (current_state ==Q3);
}

Kevin82

rel
Utente assiduo

aa



Inserito il - 10/06/2005 : 20:39:19  Mostra Profilo  Visita l'Homepage di rel Invia a rel un Messaggio Privato  Rispondi Quotando
Ovviamente per una migliore valutazione tutto il codice va correttamente indentato e commentato!
{come sono professionale oramai.. }

Modificato da - rel in data
Torna all'inizio della Pagina

rel
Utente assiduo

aa



Inserito il - 11/06/2005 : 16:30:41  Mostra Profilo  Visita l'Homepage di rel Invia a rel un Messaggio Privato  Rispondi Quotando
Rispondendo alla tua domanda nel messaggio pvt mi son scordato di dirti che è migliore la valutazione anche se usi funzioni come isdigit, isalnum (quelle incluse in ctype.h insomma) al posto di scrivere (c>='A' && c<='Z')! Ciao
Torna all'inizio della Pagina

falco_85
Utente giovane


Regione: Puglia
Prov.: Bari


Inserito il - 12/06/2005 : 20:56:54  Mostra Profilo  Visita l'Homepage di falco_85 Invia a falco_85 un Messaggio Privato  Rispondi Quotando
ma sarebbe ancora meglio se potessi vedere gli automi,così magari ci capirei qualcosa
Torna all'inizio della Pagina

rel
Utente assiduo

aa



Inserito il - 13/06/2005 : 09:32:39  Mostra Profilo  Visita l'Homepage di rel Invia a rel un Messaggio Privato  Rispondi Quotando
?
Torna all'inizio della Pagina

lops
Nuovo Utente



Inserito il - 13/06/2005 : 13:36:21  Mostra Profilo  Visita l'Homepage di lops Invia a lops un Messaggio Privato  Rispondi Quotando
Attenzione alle richieste delle diverse tracce:

La traccia n. 1 ad esempio chiede di accettare lettere minuscole e cifre decimali. L'automa riportato è sbagliato poichè accetta sia lettere minuscole che maiuscole, e come cifre non accetta lo zero, che invece è una cifra decimale.

Saluti


Citazione:
Messaggio inserito da Kevin82

raga vi allego le soluzioni dei 3 quesiti che Lops e Colleghi vi hanno dato allo scorso appello di Linguaggi
Scusate il ritardo
Prova di laboratorio di Linguaggi di Programmazione [durata 60 min.]
Appello – 30 Maggio 2005 - A.A. 2004/05

Implementare in linguaggio C il seguente automa, definito sull’alfabeto X = A #61640; N #61640; {.}, dove A è l’insieme delle lettere minuscole ed N è l’insieme delle cifre decimali.








Modalità di consegna: Salvare il programma sorgente in una cartella sul desktop utilizzando come nome della cartella e del file sorgente il corso (A,B,C), cognome, nome e numero di matricola

Codice
#include <stdio.h>
#include <stdlib.h>

#define MAX_LENGTH 100

int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,Q5,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{
case Q0:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state =Q1;
else current_state = POZZA;
break;
case Q1:
if (s[i] >= '1' && s[i] <= '9')
current_state =Q2;
else if (s[i] == '.')
current_state = Q5;
else current_state = POZZA;

break;
case Q2:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q3;
else current_state=POZZA;
break;
case Q3:
if(s[i] >= '1' && s[i] <= '9')
current_state=Q4;
else current_state=POZZA;
break;
case Q4:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q1;
else current_state=POZZA;
break;
case Q5:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q5;
else current_state=POZZA;
break;

}
++i;
}
return (current_state ==Q5);
}



int main(int argc, char* argv[])
{
char buffer[MAX_LENGTH+1];
char* filename = argv[1];
FILE* file;

file = fopen(filename,"r");
if (file == NULL)
{
printf("file inesistente");
return -1;
}


while (!feof(file))
{
if (scan(fgets(buffer,MAX_LENGTH,file)))
printf("%s RICONOSCIUTO\n", buffer);
else
printf("%s NON RICONOSCIUTO\n", buffer);
}

fclose(file);
system("PAUSE");
return 0;
}

Codice funzione di scan
int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{

case Q0:
if (s[i] >= '1' && s[i] <= '9')
current_state =Q3;
else if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state = Q1;
else current_state = POZZA;

break;
case Q1:
if ((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q2;
else current_state=POZZA;
break;
case Q2:
if((s[i] >= 'a' && s[i] <= 'z')||(s[i] >= 'A' && s[i] <= 'Z'))
current_state=Q0;
else current_state=POZZA;
break;
case Q3:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q4;
else current_state=POZZA;
break;
case Q4:
if (s[i] >= '1' && s[i] <= '9')
current_state=Q0;
else current_state=POZZA;
break;

}
++i;
}
return (current_state ==Q0);
}



Prova di laboratorio di Linguaggi di Programmazione [durata 60 min.]
Appello – 30 Maggio 2005 - A.A. 2004/05

Implementare in linguaggio C il seguente automa, definito sull’alfabeto X = A #61640; N #61640; {@}, dove A è l’insieme delle lettere maiuscole ed N è l’insieme delle cifre ottali (le cifre comprese tra 0 e 7).





Modalità di consegna: Salvare il programma sorgente in una cartella sul desktop utilizzando come nome della cartella e del file sorgente il corso (A,B,C), cognome, nome e numero di matricola
(Esempio: lo studente Rossi Mario del corso C, matricola 999999, chiamerà cartella e file C_Rossi_Mario_999999).

Codice della funzione di scan
int scan(char* s)
{
enum {Q0,Q1,Q2,Q3,Q4,POZZA} current_state = Q0;
int i = 0;

while ((s[i]!='\0' && s[i]!='\n') && current_state != POZZA)
{
switch(current_state)
{

case Q0:
if (s[i] >= 'A' && s[i] <= 'Z')
current_state =Q1;
else current_state = POZZA;
break;
case Q1:
if (s[i] >= '0' && s[i] <= '7')
current_state =Q1;
else if (s[i]=='@') current_state=Q2 ;
else current_state = POZZA;
break;
case Q2:
if (s[i] >= 'A' && s[i] <= 'Z')
current_state =Q3;
else current_state = POZZA;
break;
case Q3:
if (s[i] >= '0' && s[i] <= '7')
current_state =Q3;
else current_state = POZZA;
break;

}
++i;
}
return (current_state ==Q3);
}


Torna all'inizio della Pagina
  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