| Autore |
Discussione  |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 27/05/2003 : 17:53:43
|
Sembra che linguaggi lo debba dare solo io.. Sto cazz di compilatore è ostico...
Allora:
unsigned hash(char *s) {
unsigned hashval;
for (hashval=0; *s !='\0'; s++)
hashval= *s + 31 *hashval;
return hashval % HASHSIZE;
}
In questa funzione la "s" sarebbe la stringa estratta dal file? Ovvero il token? Quindi solo il name.token giusto?
char *strdup(char*s) {
char *p;
p=(char*)malloc(strlen(s)+1);
if (p != NULL) strcpy(p,s);
return p;
};
Questa funzione a che diavolo serve? Non sono riuscito a capirlo visto che la documentazione è assente sulle dispense... 
Una volta prelevato il token l'andiamo ad inserire nella symbol table grazie alla (fantastica) funzione presente sulle dispense. L'unica cosa che ci resta da fare è se le istruzioni sono scritte in modo corretto (tramite il parser) quindi analizzare il primo token con il successivo e utilizzare le varie case... Il problema è che bisogna anche dire dov'è l'errore, e SOPRATUTTO mettere nella symbol table tutte le linee dove sono usate le variabili...
Ma la peggior cosa è il fatto che non ce l'ha mai spiegato o se l'ha fatto non si sarà fermato 2 secondi sopra..
Qualcuno di voi è a buon punto?? Magari si riesce a fare qualcosa in comitiva e avere ognuno il compilatore per accipicchia propri. Come diavolo faremo? boh...
|
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
|
|
pbolo
PDott
    

Regione: Puglia
Prov.: LECCE
Città: Novoli
|
Inserito il - 27/05/2003 : 22:49:51
|
io domani mattina alle 10.00 devo andare da ferilli a chiedere un po' di cose.... poi vi faccio sapere che mi risponde.. le sue dispense fanno proprio pena...
cmq la prima funzione serve per calcolare il valore hash di una stringa.. spesso è la domanda che esce alla parte dello scritto che riguarda il C. |
pbolo

 |
 |
|
|
Chilavert
admin
    

Regione: Puglia
Prov.: BA
Città: Bari
|
Inserito il - 28/05/2003 : 17:18:58
|
Citazione: Messaggio inserito da pbolo le sue dispense fanno proprio pena...
...però lui oggi ti ha dato fior di spiegazioni... no? |
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.] |
 |
|
|
pbolo
PDott
    

Regione: Puglia
Prov.: LECCE
Città: Novoli
|
Inserito il - 28/05/2003 : 19:36:23
|
devo spezzare una freccia a favore di ferilli...
oggi mi ha dedicato quasi un ora del suo tempo per delle spiegazioni..
mi ha dato delle delucidazioni riguardo la gestione degli errori.. (mi ha spiegato i lucidi)
ha parlato della documentazione... vuole una spiegazione discrosiva di cosa prevede il programma e l'automa (si, proprio il disegno) del riconoscitore....
da anche la possibilità di unirsi in gruppo (max 3) per fare il programma.. ma vuole qualcosina in più...
|
pbolo

 |
 |
|
|
danandr
Utente medio
 
Regione: Puglia
Prov.: BARI
Città: MONOPOLI
|
Inserito il - 29/05/2003 : 09:27:28
|
Salve ragazzi,ciao Tano. Sono anch'io nelle tue stesse condizioni,quindi farò il possibile per collaborare,quando qualcosa mi sarà + kiaro.
Dubbio: Come dobbiamo allocare la tabella HASH in memoria,dobbiamo utilizzare la funzione malloc? Ovvero una cosa del genere:
TABLE_EL *ptr;
ptr = (TABLE_EL *)malloc( sizeof( TABLE_EL )*HASH_TABLE_SIZE );
Ciao!
|
danandr |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 29/05/2003 : 10:57:47
|
La malloc deve essere usata per l'allocazione dinamica. Io mi attengo alle dispense di Ferilli e agisco in tal modo!
pbolo ma te eri il tipo che si era fissato sulla
BE GIN
?
 |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
danandr
Utente medio
 
Regione: Puglia
Prov.: BARI
Città: MONOPOLI
|
Inserito il - 29/05/2003 : 17:43:59
|
scusa tano,ma perchè ti chiedi a cosa serve la funzione
char *strdup(char*s) { char *p; p=(char*)malloc(strlen(s)+1); if (p != NULL) strcpy(p,s); return p; };
se nn bisogna usare la allocazione dinamica?
|
danandr |
 |
|
|
pbolo
PDott
    

Regione: Puglia
Prov.: LECCE
Città: Novoli
|
Inserito il - 29/05/2003 : 22:23:49
|
infatti.. ferilli questanno non vuole ne liste ne allocazione dinamica...
no tano.... non ho capito.. quindi probabilmente non ero io..
anche perché se ti riferisci a una lezione di laboratorio di linguaggi è impossibile.. io non sono mai venuto quest'anno.. |
pbolo

 |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 30/05/2003 : 00:37:39
|
Non vuole l'allocazione dinamica? Quindi niente malloc? Purtroppo io sto studiando sulle dispense dell'anno scorso e queste utilizzano i puntantori e le malloc a tutto spiano...
Qualcuno di voi può inviarmi tramite posta le dispense di quest'anno? in biblioteca scarseggiano..
tano0@inwind.it |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
pbolo
PDott
    

Regione: Puglia
Prov.: LECCE
Città: Novoli
|
Inserito il - 30/05/2003 : 01:02:24
|
| non solo in biblioteca scarseggiano ma in rete non le ha messe.. domani mattina dovrei andare a chiedergli una cosa.. porto un dischetto per copiarle.. speriamo di trovarlo... |
pbolo

 |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 30/05/2003 : 10:54:32
|
Scusate la mia immensa ignoranza, ma l'allocazione statica non necessita ne di malloc ne dei puntatori? Cosa cambia essenzialmente dall'allocazione dinamica? Utilizzeremo sempre la tecnica HASH giusto?
Non fucilatemi ma questa mi era sfuggita  |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
n/a
deleted
Città: Bari
|
Inserito il - 31/05/2003 : 09:29:47
|
Le dispense di quest'anno sono molto simili a quelle dell'anno scorso. Devi fermarti alle structure nelle dispense del 2001 e poi devi passare direttamente ai file. Ignora tutte le realizzazioni con liste perchè ha precisato che non le vuole. Quindi devi usare structure, array e file.
Delle dispense sullo scanner mancano solo i primi 2 lucidi che quest'anno ha fatto vedere (ma che non c'erano nelle dispense del 2001).
In più ci sono le ultime dispense sul parser che Ferilli ha organizzato in maniera diversa.
Ovviamente ci sono le dispense sulla tecnica hash (solo parte teorica) che trovi tra le lezioni di programmazione del sito di Ferilli.
Non dovrebbe esserci altro. Anch'io avevo intenzione di dare linguaggi a giugno, ma analisi mi sta togliendo molto tempo e non ho ancora iniziato il compilatore. Penso che rimanderò a luglio.  In bocca al lupo x l'appello. |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 31/05/2003 : 11:04:52
|
Io ho tutte le dispense del 2001 e ci sono tutti i codici della scrittura in una tabella HASH. Ora però mi trovo in dubbio! Se con l'allocazione statica non dobbiamo utilizzare i puntantori dobbiamo creare il codice da 0 noi? Ma vanno sempre e cmq fatti i controlli per vedere se una stringa è stata già inserita ecc.
Inoltre, visto che mi trovo. Nelle funzioni di ferilli per separare un token utilizza la ISSPACE() ovvero fino a quando non c'è uno spazio butta tutto nel vettore di caratteri. ORa mi domando
A:=B;
Lo infila tutto nel token... In teoria dovremmo separarlo! Qualche consiglio?? |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 31/05/2003 : 11:44:34
|
| fatemi capire una cosa... i puntatori non vanno proprio usati quindi? |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
n/a
deleted
Città: Bari
|
Inserito il - 31/05/2003 : 12:32:51
|
Citazione: Messaggio inserito da Tano
fatemi capire una cosa... i puntatori non vanno proprio usati quindi?
No. A meno che non siano necessari per gestire record, array o file. Io so che vengono usati solo per le liste. Comunque potrei pure sbagliarmi, perchè di c x ora ho fatto ben poco.  |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 31/05/2003 : 15:11:15
|
Sono quasi riuscito a finire di scrivere le funzioni che riempiono una tabella hash. Tutto senza puntatori, unico problema sta nel fatto che non posso usare la strcmp () senza puntatori..
Dovrò escogitare qualche metodo di confronto più semplice
stringapresente = stringadainserire
C dovrebbe permetterlo senza grossi problemi.. |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
|
pbolo
PDott
    

Regione: Puglia
Prov.: LECCE
Città: Novoli
|
Inserito il - 31/05/2003 : 20:05:39
|
| i puntatori non devono essere usati.. ovvio che se in qualche porzione di codice servono ferilli non vi ammazzerà... (speriamo!!!) |
pbolo

 |
 |
|
|
danandr
Utente medio
 
Regione: Puglia
Prov.: BARI
Città: MONOPOLI
|
Inserito il - 01/06/2003 : 10:04:40
|
secondo me i puntatori vanno usati,anche perchè ferilli li ha spiegati,fanno parte del programma.Io penso siano indispensabili per passare per riferimento i parametri alle funzioni Domanda: Per scrivere le funzioni di RICERCA HASH e ORDINAMENTO HASH,avete praticamente scitto in linguaggio C gli algoritmi che stanno sulle dispende? O si possono semplificare?
Che vita da cani,si lavora anche di domenica,spero ci sia qualcun'altro a farmi compagnia! AIUTIAMOCI |
danandr |
 |
|
|
Tano
Utente assiduo
  

Regione: Puglia
Prov.: FG
Città: CERIGNOLA
|
Inserito il - 01/06/2003 : 13:33:56
|
Allora, questo è un piccolo esempio di immagazzinamento delle tabelle HASH. (è ancora in fase di costruzione quindi non funziona del tutto) DOVETE MODIFICARE LA FUNZIONE PER CALCOLARE L' HASHVAL PERCHE' NON ME LA RICORDO! SE POTETE POSTATELA!!
Quindi:
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <stdio.h>
#define HASHSIZE 101
struct nlist{
struct nlist *next;
char name[20];
char defn;
} nlist1;
static struct nlist hashtab[HASHSIZE];
int i=0;
unsigned hashval;
char risp;
main() {
do {
printf("Inserisci un identificatore ");
scanf("%s",nlist1.name);
printf("Carattere inserito %s : \n",nlist1.name);
for(i=0;i<=strlen(nlist1.name);i++)
hashval=((hashval+((nlist1.name[i])*(i+1))));
hashval=hashval%101;
printf("Il valore hash calcolato è: %i \n",hashval);
hashtab[hashval].name=nlist1.name;
printf("Vuoi continuare ad inserire identificatori?");
scanf("%c",risp);
}
while (risp!='s');
printf("I valori presenti nella HASHTABLE sono: ");
for (i=0;i<=HASHSIZE;i++) printf("%s",hashtab[i].name);
return 0;
}; //Fine Main |
"I Giorni e le Notti suonano in questi miei nervi d'arpa. Vivo di questa gioia malata d'universo e soffro per non saperla accendere nelle mie parole"
Ungaretti
Tutorial DirectX 9 in Italiano: http://wtano.wordpress.com/
|
 |
|
| |
Discussione  |
|