Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi A - F > Algoritmi e strutture dati > Progetto "FACCIALIBRO"
Pages (28): « First ... « 5 6 7 8 [9] 10 11 12 13 » ... Last »   Last Thread   Next Thread
Author
Thread    Expand all | Contract all    Post New Thread    Post A Reply
Collapse
nas
.amico.

User info:
Registered: Oct 2004
Posts: 35 (0.00 al dì)
Location: milano
Corso: Informatica
Anno: 1
Time Online: 23:33:27 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by iuz-lab
io ho scelto questa soluzione (vedi allegato)..

scusate se non si capisce un c***o ma non sono un grande scrittore..


la struttura dati l'ho simile alla tua!
uso un albero RB per i nodi e liste di adiacenza per il grafo.
come hai pensato di gestire la funzionalità di "consigliare nuovi amici" ???

09-02-2009 18:45
Click Here to See the Profile for nas Click here to Send nas a Private Message Find more posts by nas Add nas to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
green.riot
.simpatizzante.

User info:
Registered: Oct 2007
Posts: 14 (0.00 al dì)
Location: Arona Lake Major
Corso: Informatica
Anno: Primo! ;)
Time Online: 2:47:20 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

mm, io ho fatto un grafo con liste di adiacenza orientato quando una persona aggiunge un'altra finisce nel vettore degli amici. se anche l'altra persona ha il puntatore della persona che ha fatto la richiesta di amicizia allora sono amici, in caso contrario la richiesta resta sempre pendente.

ora dubbio, volevo fare un inserimento ordinato utilizzando la ricerca binaria modificata che mi restituisca il puntatore in cui fare l'inserimento. solo che sono sempre costretto a fare la scansione di tutta la lista per trovare il nickname da cercare :shock:

esempio:


___1______2____3_____4_____5____
| andrea | azul | beta | darwin | growl |
---------------------------------------------

@cerca darwin
G->V / 2 # divido in due il numero dei vertici


nella ricerca binaria dovrei fare il numero dei vertici diviso due e poi accedere al nickname e fare un confronto .. solo che per come funsiona il grafo con il puntatore next .. non è possibile .. o forse ignoro qualcosa di banale?

l'unica soluzione è creare una struttura dati parallela per la ricerca? un vettore? una matrice?

crecasi guru c oppure sherpa algoritmi

__________________
Tutti gli uomini sono mortali.
Socrate era mortale.
Dunque, tutti gli uomini sono Socrate.
(Woody Allen)

Last edited by green.riot on 09-02-2009 at 23:13

09-02-2009 22:59
Click Here to See the Profile for green.riot Click here to Send green.riot a Private Message Find more posts by green.riot Add green.riot to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
green.riot
.simpatizzante.

User info:
Registered: Oct 2007
Posts: 14 (0.00 al dì)
Location: Arona Lake Major
Corso: Informatica
Anno: Primo! ;)
Time Online: 2:47:20 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

ops come non detto si può -.-'' scusate

__________________
Tutti gli uomini sono mortali.
Socrate era mortale.
Dunque, tutti gli uomini sono Socrate.
(Woody Allen)

10-02-2009 00:33
Click Here to See the Profile for green.riot Click here to Send green.riot a Private Message Find more posts by green.riot Add green.riot to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
iuz-lab
.amico.

User info:
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

come hai pensato di gestire la funzionalità di "consigliare nuovi amici" ???


non mi ricordo bene a cosa ho pensato.. comunque è una cosa del genere..
supponendo di voler consigliare amici al profilo P..
creo una lista di possibili amici di P popolando una lista con tutti gli amici degli amici di P (nessun nodo duplicato e nessun amico di P dovra' finire in questa lista)..
e poi la scorro e per ogni nodo vado alla ricerca di almeno 3 amici che sono presenti nella lista degli amici di P..
se ci sono 3 amici lo consiglio, altrimenti no..

10-02-2009 00:36
Click Here to See the Profile for iuz-lab Click here to Send iuz-lab a Private Message Find more posts by iuz-lab Add iuz-lab to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Benny
.fedelissimo.

User info:
Registered: May 2003
Posts: 48 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno: 2
Time Online: 12:49:02: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ciao a tutti, qualcuno di voi mi saprebbe dire come diavolo si resetta una stringa(puntatore char) in questo malefico linguaggio?
le sto provando tutte il problema mio è che uso scanf e strcat che concatena due puntatori stringa, ma all'iterazione successiva il puntatore è quasi pieno e non fa un tubo o fa cazzate..
aggiungere un \0 non fa nulla, anzi da errore
non è bello come java quindi non si può fare stringa=""
funzioni standard non ci sono
fare free e riallocare non fa una mazza
insomma o mi metto io a grattare i dischi magnetici per pulire la stringa o non si da una mossa sta maledetta stringa...
io ancora devo fare un casino di roba e mi sento come prince of persia solo che ho una clessidra piu piccola anche se devo consegnare il 9 marzo

__________________
Se non credi in te stesso, chi ci crederà?

10-02-2009 10:55
Click Here to See the Profile for Benny Click here to Send Benny a Private Message Find more posts by Benny Add Benny to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Gehur
.grande:maestro.

User info:
Registered: Apr 2006
Posts: 519 (0.07 al dì)
Location: Milano
Corso: Informatica
Anno:
Time Online: 3 Days, 0:41:42 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

il tuo problema è leggere una la stringa di input??
per esempio nick n nick2

comunque se ti può essere utile e se ho capito il problema:
char* stringa = calloc(30,sizeof(char));
ti crea una stringa di 30 caratteri, se non bastano basta fare realloc

string = (char*)realloc(string, (i+1)*sizeof(char));

sui vari progetti vecchi c'è la funzione readstring che fa questo

10-02-2009 11:24
Click Here to See the Profile for Gehur Click here to Send Gehur a Private Message Find more posts by Gehur Add Gehur to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Benny
.fedelissimo.

User info:
Registered: May 2003
Posts: 48 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno: 2
Time Online: 12:49:02: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

no gehur il problema e leggere system ? nick1 nick2 gruppo
dove gruppo puo avere degli spazi bianchi, e in generale in tutti i comandi dove ci sta o gruppo o status che implicano spazi bianchi..
provero a vedere questa readstring..
comunque nel realloc, si estende la stringa corrente, io devo renderla di nuovo vuota
ovvero dopo un comando il puntatore e sporco del vecchio comando, se io ne immettessi un altro, lo metterebbe in coda fino al totale riempimento o a delle schifezze...
i passi sono:
comando carattere qualcosa gruppo(o status)
le stringhe sono piene
devo renderle vuote(gruppo=vuoto)
grazie
controllero quella funzione

__________________
Se non credi in te stesso, chi ci crederà?

10-02-2009 13:20
Click Here to See the Profile for Benny Click here to Send Benny a Private Message Find more posts by Benny Add Benny to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
darkshadow
Are You From The Past?

User info:
Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

 
magari farlo puntare a NULL??

__________________
by Ð@rk§h@ÐØw

10-02-2009 13:25
Click Here to See the Profile for darkshadow Click here to Send darkshadow a Private Message Find more posts by darkshadow Add darkshadow to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Benny
.fedelissimo.

User info:
Registered: May 2003
Posts: 48 (0.01 al dì)
Location: Milano
Corso: Informatica
Anno: 2
Time Online: 12:49:02: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

gia fatto, quando alla prossima iterazione ci riscrivo sopra, riscriverei su un puntatore a null, quindi errore ecc...

__________________
Se non credi in te stesso, chi ci crederà?

10-02-2009 22:24
Click Here to See the Profile for Benny Click here to Send Benny a Private Message Find more posts by Benny Add Benny to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
darkshadow
Are You From The Past?

User info:
Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

 

cmq non capisco a cosa ti serve azzerare la stringa. quando ti serve basta ke la fai punatre a la nuova stringa.

__________________
by Ð@rk§h@ÐØw

10-02-2009 22:30
Click Here to See the Profile for darkshadow Click here to Send darkshadow a Private Message Find more posts by darkshadow Add darkshadow to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
iuz-lab
.amico.

User info:
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

per leggere una riga del tipo nick n st dove nick non ha spazi mentre st si potete fare in questo modo..

code:
line = gets(); nickname = strtok(line, " "); command = strtok(NULL, " "); status = strtok(NULL, "");


quando prendo status il secondo parametro è lasciato intenzionalmente vuoto..

per capire meglio, il mio codice fa' una cosa del genere..
code:
[cut] #define BLK " \t" [cut] cmd->w0 = cmd->w1 = cmd->w2 = NULL; cmd->w0 = s_strtok(line, BLK); if (cmd->w0 == NULL) { // uscita con errore } cmd->w1 = s_strtok(NULL, BLK); if (cmd->w1 == NULL) { // uscita con errore } if (strlen(cmd->w1) != 1) { // uscita con errore } switch (cmd->w1[0]) { [cut] case 'n': free(cmd->w1); cmd->w2 = s_strtok(NULL, ""); cmd->w1 = s_trim(cmd->w2, BLK); if (cmd->w1 != NULL) { cmd->action = USR_CH_STATUS; return cmd; } [cut]


dove s_strtok è l'equivalente di strtok riscritto da me per non aver problemi di overflow e s_trim è una funzione sempre riscritta da me per non aver problemi di overflow e che rimuove tutti i caratteri del secondo parametro dalla testa e dalla coda del primo parametro..

in pratica io ho creato una funzione parse() che prende in input una linea e ritorna una struttura "command" che contiene un int action (che indica quale tipo di azione deve essere svolta) e tre stringhe (che contengono, a seconda dell'operazione richiesta, tutte le stringhe necessarie.. per esempio: se l'azione è "n" allora conterranno nome nick e status)..

se volete posto il codice completo della mia funzione parse.. ma credo che la elimineranno dal forum (visto che dovrebbe essere proibito aiutarsi con pezzi di codice) (anche se è possibile utilizzare codice trovato in rete e nei progetti precedenti.. mah?!?! ha senso?!?!)

10-02-2009 22:47
Click Here to See the Profile for iuz-lab Click here to Send iuz-lab a Private Message Find more posts by iuz-lab Add iuz-lab to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
iuz-lab
.amico.

User info:
Registered: Feb 2006
Posts: 38 (0.01 al dì)
Location:
Corso:
Anno:
Time Online: 7:09:25 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

giusto per chiarire le idee a chi ne ha bisogno..

per gestire input di lunghezza arbitraria si usano le funzioni malloc, realloc, free, getchar..

esempio per la memoria (lettura di 9 caratteri):

code:
int i; char *str; str = malloc((size_t) 10); // allocazione dello spazio per 9 caratteri (piu' 1 per il '\0') for (i = 0; i < 9; i++) { // leggo 9 caratteri str[i] = getchar(); } str[9] = '\0'; // metto il carattere di fine stringa (non servirebbe ma è sempre bene) // codice che elabora la mia stringa free(str); // libero la memoria allocata all'inizio


visto che readstring è gia' disponibile online non credo che postare la mia funzione possa essere considerato contro i termini del progetto..

mia funzione equivalente di readstring:
code:
static int __eofflag = 0; char *s_gets () { char *line; int i, s = 16; char c; if (__eofflag) { return NULL; } line = malloc(sizeof(char) * s); for (i = 0; 1; i++) { if (i + 1 >= s) { s *= 2; line = realloc(line, s); } c = getchar(); switch (c) { case '\n': line[i] = '\0'; return line; case EOF: __eofflag = 1; if (i == 0) return NULL; line[i] = '\0'; return line; default: line[i] = c; break; } }


questa funzione legge una intera stringa da stdin e ritorna un puntatore a questa.. non ha problemi di overflow e fa soltanto log_2(n) riallocazioni (dove n è la lunghezza della stringa).. l'unico svantaggio è che se n è di poco superiore ad una potenza di 2 si spreca "un'po'" di spazio (ma è trascurabile visto per cosa dovrebbe essere usata)..

sarebbe migliorabile ulteriormente ma diventerebbe illeggibile..

10-02-2009 23:02
Click Here to See the Profile for iuz-lab Click here to Send iuz-lab a Private Message Find more posts by iuz-lab Add iuz-lab to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Joy88
.consigliere.

User info:
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno:
Time Online: 1 Day, 10:27:00: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ciao!
ragazzi qui il progetto va male.......!!!
Ora sono alle prese con il nick c...... mah.... ho seri dubbi.....
Domanda:
Mi sono fatta una virtual machine x linux dato che uso windows solo che mi mancano le librerie.. anche quelle standard x il gcc!!
quindi non funziona niente.. quindi chiedo a voi guru di linux: sapete dove posso scaricarle e dove le devo mettere???

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."

*Dante*

11-02-2009 11:45
Click Here to See the Profile for Joy88 Click here to Send Joy88 a Private Message Find more posts by Joy88 Add Joy88 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
darkshadow
Are You From The Past?

User info:
Registered: Jul 2007
Posts: 485 (0.07 al dì)
Location: Milano
Corso: Informatica Magistrale
Anno: 1
Time Online: 13 Days, 13:38:56 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

 
ma perchè ti 6 fatto la VM?? guarda che c'è gcc anche per winzokz!!

__________________
by Ð@rk§h@ÐØw

11-02-2009 12:04
Click Here to See the Profile for darkshadow Click here to Send darkshadow a Private Message Find more posts by darkshadow Add darkshadow to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
Collapse
Joy88
.consigliere.

User info:
Registered: Jan 2008
Posts: 101 (0.02 al dì)
Location: ~Milano
Corso: Informatica
Anno:
Time Online: 1 Day, 10:27:00: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Ho scritto con il Dev C++ ma dalle lezioni di lab ho scoperto che alcune cose sono incompatibili con il gcc.. ad esempio la getch(); che equivale alla system ("PAUSE")..
quindi ho dedotto che non stavo scrivendo in ANSI C...
In ogni caso.. su windowz cosa devo fare?? i comandi son gli stessi????

__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."

*Dante*

11-02-2009 12:08
Click Here to See the Profile for Joy88 Click here to Send Joy88 a Private Message Find more posts by Joy88 Add Joy88 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 09:03.    Post New Thread    Post A Reply
Pages (28): « First ... « 5 6 7 8 [9] 10 11 12 13 » ... Last »   Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.069 seconds (65.95% PHP - 34.05% MySQL) con 24 query.