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
 Piccolo aiutino nel compilatore...

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
Tano 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...
18   U L T I M E    R I S P O S T E    (in alto le più recenti)
Tano 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
danandr 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
pbolo 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!!!)
Tano 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..
n/a 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 Inserito il - 31/05/2003 : 11:44:34
fatemi capire una cosa... i puntatori non vanno proprio usati quindi?
Tano 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??
n/a 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 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
pbolo 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...
Tano 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
pbolo 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..
danandr 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?

Tano 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

?
danandr 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!

pbolo 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ù...

Chilavert 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?
pbolo 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.

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

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