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
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Pagina Successiva
Autore Discussione Precedente Discussione Discussione Successiva
Pagina: di 5

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 09/10/2008 : 11:17:21  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
Ma per quanto riguarda il laboratorio, è necessario svolgere TUTTI gli esercizi proposti su grammar reader, automi a stati finiti e scanner, oppure è sufficiente svolgerne qualcuno?

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 14/10/2008 : 12:21:53  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
allora? nessuno sa niente?
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 14/10/2008 : 16:35:30  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
cerca di fare almeno più del 50% degli es del grammar reader..
automi e scanner sono facili..
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 15/10/2008 : 10:02:59  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
gli automi li ho fatti, mi manca solo l'ultimo esercizio, quindi penso che possa andare bene...
gli esercizi sullo scanner e su grammar reader mi stanno un pò bloccando... da un bel pò veramente...
se qualcuno mi potesse dare una mano sarei molto contenta...
grazie ciao ciao
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 15/10/2008 : 10:22:08  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
sul grammar reader non ti intestardire tanto..
non c'è bisogno che tu faccia tutti i punti..
preoccupati piuttosto di sapere bene la teoria, perchè all'orale è quella che conta di più
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 15/10/2008 : 11:28:08  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
ma nel momento in cui io gli mando i programmi, lui può non accettarmi all'orale perchè i programmi che gli ho mandato non sono sufficienti? io purtroppo per deidcarmi al laboratorio, che è la parte da mandare prima a lui, ho trascurato da qualche settimana la parte teorica...
cmq ti ringrazio... ciao
Torna all'inizio della Pagina

Dr House
Utente medio

Città: Bari


Inserito il - 15/10/2008 : 11:50:57  Mostra Profilo  Visita l'Homepage di Dr House Invia a Dr House un Messaggio Privato  Rispondi Quotando
il grammar reader
non trascurare assolutamente la teoria!

"La realtà è fatta di cose vere e cose supposte.
Le cose vere le mettiamo da parte, ma le supposte dove le mettiamo?"
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 15/10/2008 : 12:06:21  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
che significa?
Torna all'inizio della Pagina

Dr House
Utente medio

Città: Bari


Inserito il - 15/10/2008 : 17:21:33  Mostra Profilo  Visita l'Homepage di Dr House Invia a Dr House un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da titty2008

che significa?



che il grammar reader lo devi fare, se non tutto fai quello che riesci.
La teoria non la devi trascurare assolutamente

"La realtà è fatta di cose vere e cose supposte.
Le cose vere le mettiamo da parte, ma le supposte dove le mettiamo?"
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 15/10/2008 : 19:07:49  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da titty2008

ma nel momento in cui io gli mando i programmi, lui può non accettarmi all'orale perchè i programmi che gli ho mandato non sono sufficienti?



non preoccuparti..
certo ke se del grammar reader gli fai uno due punti allora certo ke nn ti accetta..
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 16/10/2008 : 11:44:45  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
ok, grazie a tutti...
sono sempre fregata, perchè il mio problema principale è il grammar reader...
Torna all'inizio della Pagina

Dr House
Utente medio

Città: Bari


Inserito il - 16/10/2008 : 18:00:14  Mostra Profilo  Visita l'Homepage di Dr House Invia a Dr House un Messaggio Privato  Rispondi Quotando
Citazione:
Messaggio inserito da titty2008

ok, grazie a tutti...
sono sempre fregata, perchè il mio problema principale è il grammar reader...




pensa a quando arrivi a fare il lab di ASD!

"La realtà è fatta di cose vere e cose supposte.
Le cose vere le mettiamo da parte, ma le supposte dove le mettiamo?"
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 16/10/2008 : 19:47:57  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 17/10/2008 : 10:13:59  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
grazie per il conforto... molto molto gentili...
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 17/10/2008 : 10:17:41  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
nel programma del grammar reader, anche quello guida pubblicato dal professore, mi da tre errori:
implicit declaratio of function 'int isupper(..)'
implicit declaratio of function 'int islower(..)'
e alla fine per quanto riguarda system ('pause')
qualcuno saprebbe dirmi perchè?
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 17/10/2008 : 10:26:57  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
non si scrive system ('pause') ma system ("pause")

per le altre due è impossibile risponderti senza vedere il codice
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 17/10/2008 : 10:56:27  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
si scusa ho sbagliato io a scrivere qui...
dato che mi da questi tre errori non posso verificare se gli esercizi che svolgo sono corretti!
Ho fatto il primo esercizio, qualcuno mi saprebbe dire se è corretto o meno? grazie anticipatamente...
La traccia è scritta nell'esercizio...
/*
GrammarReader
v. 1.2.2
Corrado Mencar, Pasquale Lops
*/

#include <stdio.h>

#define MAX_WORD_LENGTH 100
#define MAX_PRODUCTIONS 100

// Definizione dei tipi ------------------------------------------------------*/

typedef char Symbol;

typedef struct
{
Symbol word [MAX_WORD_LENGTH];
unsigned length;
} Word;

typedef struct
{
Word left;
Word right;
} Production;

typedef struct
{
Production productions[MAX_PRODUCTIONS];
unsigned numprod;
} Grammar;

// Procedure di riconoscimento dei simboli -----------------------------------*/

int is_terminal(Symbol s)
{
return (islower(s));
//return (s >= 'a') && (s <= 'z');
}

int is_nonterminal(Symbol s)
{
return (isupper(s));
//return (s >= 'A') && (s <= 'Z');
}

int is_prodsym(Symbol s)
{
return (s == '>');
}

int is_prodsep(Symbol s)
{
return (s == '\n');
}

/* Lettura di simboli da file ------------------------------------------------*/

Symbol read_sym(FILE* file)
{
Symbol s;

// fscanf(file,"%c",&s);

//questo ciclo permette di saltare la lettura di spazi tra i simboli
do
s = getc(file);
while (s==' ');

return s;
}

Production* add_new_production(Grammar *g)
{
Production* p;
p = &(g->productions[g->numprod++]);
p->left.length = 0;
p->right.length = 0;

return p;
}


void add_symbol(Word *w, Symbol s)
{
w->word[w->length++] = s;
}


// Procedura di acquisizione di una grammatica da un file --------------------*/

Grammar* load_grammar(FILE* file, Grammar* g)
{
enum States {START,LEFT,RIGHT,ERROR};
/* START = Scansione di una nuova produzione [F]
LEFT = Scansione della parte sinistra
RIGHT = Scansione della parte destra [F]
ERROR = Errore di scansione
*/
enum States current_state = START; // Stato iniziale
Symbol s;
Production* p;

g->numprod = 0; // Inizializza la grammatica

while (current_state != ERROR && !feof(file))
{
s = read_sym(file);
if (feof(file)) break;
switch(current_state)
{
case START:
if (is_terminal(s) || is_nonterminal(s))
{
current_state = LEFT;

//p = &(g->productions[g->numprod++]);
//p->left.length = 0;
p = add_new_production(g);
add_symbol(&p->left,s);
//L'istruzione precedente corrisponde a p->left.word[p->left.length++] = s;
}
else if (is_prodsep(s))
{
current_state = START;
}
else
current_state = ERROR;
break;
case LEFT:
if (is_terminal(s) || is_nonterminal(s))
{
current_state = LEFT;
add_symbol(&p->left,s);
}
else if (is_prodsym(s))
{
current_state = RIGHT;
}
else
current_state = ERROR;
break;
case RIGHT:
if (is_terminal(s) || is_nonterminal(s))
{
current_state = RIGHT;
add_symbol(&p->right,s);
}
else if (is_prodsep(s))
{
current_state = START;
}
else
current_state = ERROR;
break;
}
}

if (current_state == START || current_state == RIGHT)
return g;
else
return NULL;

}

// Procedure di stampa

void print_sym (Symbol s)
{
printf("%c ",s);
}


void print_word (Word* w)
{
int i;

for (i=0; i<w->length; i++)
print_sym(w->word[i]);
}

void print_production (Production* p)
{
print_word(&p->left);
printf (" --> ");
print_word(&p->right);
}

void print_grammar(Grammar* g)
{
int i;

if (g == NULL)
printf ("Errore! Grammatica non valida! \n");
else
{
printf ("Numero di produzioni: %d\n", g->numprod);
for (i=0; i<g->numprod; i++)
{
print_production(&g->productions[i]);
printf ("\n");
}
}
}

/*Controllare che nella parte sinistra di ogni produzione esista
almeno un simbolo nonterminale*/

int esercizio (Grammar* g)
{
int i; //indice delle produzioni
int j; //indice per la scansione del corpo di una produzione
Symbol h; //simbolo della testa della produzione

for (i=0; g->numprod; i++)
{
for (j=0; j < g->productions[i].left.length; j++)
{
h = g->productions[i].left.word[j];
if (is_nonterminal(h))
printf ("Produzione corretta!\n");
}
return h;
}
}


// MAIN ------------------------------------------------------------------------

int main(int argc, char *argv[])
{
char* filename = argv[1];
FILE* gram_file;
Grammar grammar;

// controlla se è stato inserito il nome del file

if (filename == 0)
{
printf("nome file non specificato \n");
return -1;
}

// apertura del file contenente la grammatica

gram_file = fopen(filename,"r");
if (gram_file == NULL)
{
printf("nome di file errato\n");
return -1;
}

print_grammar(load_grammar(gram_file,&grammar));

fclose(gram_file);


system("PAUSE");
return 0;
}

Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 17/10/2008 : 11:21:50  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
a me compila..
Torna all'inizio della Pagina

titty2008
Utente giovane

0129_da_pebbles



Inserito il - 17/10/2008 : 11:26:02  Mostra Profilo  Visita l'Homepage di titty2008 Invia a titty2008 un Messaggio Privato  Rispondi Quotando
ed è giusto l'esercizio? fa quello che chiede? per favore potresti farmi questa cortesia grandissima???
a me no, perchè da quegli errori che ho scritto sopra...
non mi chiedere perchè?
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 17/10/2008 : 11:35:47  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
comunque per quanto riguarda i primi due esercizi potresti semplificarti la vita in un altro modo..
nella funzione load grammar mentre scandisci la parte start/left di ogni produzione controlla con un if se il simbolo letto è nonterminale.. quando arrivi al simbolo di produzione > se non è stato letto nessun simbolo nonterminale current_state lo fai diventare error se il simbolo c'è passi a current_state right e azzeri il flag (altrimenti alla prossima produzione ti dice sempre che c'è il nonterminale)..
per il secondo es. invece quello della S il principio è lo stesso, solo che qui controlli se la S c'è o meno alla fine del ciclo while cioè quando hai scandito tutte le prod.
Torna all'inizio della Pagina

SD83
Utente assiduo


Regione: Puglia
Prov.: Foggia


Inserito il - 17/10/2008 : 11:39:55  Mostra Profilo  Visita l'Homepage di SD83 Invia a SD83 un Messaggio Privato  Rispondi Quotando
allora..
errori di compilazione non ne da..
ma la funzione esercizio che hai fatto non funziona per un semplice motivo:
la hai soltanto definita ma non la hai mai invocata..
Torna all'inizio della Pagina
Pagina: di 5 Discussione Precedente Discussione Discussione Successiva  
Pagina 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,31 secondi.

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