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

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
Kevin82 Inserito il - 10/06/2005 : 18:17:27
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);
}
5   U L T I M E    R I S P O S T E    (in alto le più recenti)
lops Inserito il - 13/06/2005 : 13:36:21
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);
}


rel Inserito il - 13/06/2005 : 09:32:39
?
falco_85 Inserito il - 12/06/2005 : 20:56:54
ma sarebbe ancora meglio se potessi vedere gli automi,così magari ci capirei qualcosa
rel Inserito il - 11/06/2005 : 16:30:41
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
rel Inserito il - 10/06/2005 : 20:39:19
Ovviamente per una migliore valutazione tutto il codice va correttamente indentato e commentato!
{come sono professionale oramai.. }

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,09 secondi.

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