![]() |
Pages (3): « 1 2 [3] Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- Progetto "FACCIALIBRO" (http://www.dsy.it/forum/showthread.php?threadid=37551)
Io lo consegno a marzo perche lavorando non ho molto tempo per studiare
Originally posted by Bloom
Ma non è più semplice avere un albero rb per i profili e per ogni profilo avere una lista di adiacenza?
Oppure anche accoppiata grafo/liste può andare bene secondo me
__________________
Eidolon64|Blog
Beh...il progetto è un pochetto contorto ![]()
Originally posted by Joy88
Sì forse hai ragione..
per ogni profilo faccio una lista di amici..
così la lista rientrerebbe come campo del profilo..
Mi sembra + facile..!!!
Grazie!!
Bloom com'è andato il tuo progetto???
Originally posted by Shaper
Beh, io l'avevo pensato così perchè, dal momento che dovrò scansire piuttosto spesso la lista di amici, usando un abero rb velocizzerei l'operazione...
Però in alternativa potrei anche fare una albero per i profili e, separatamente, un array con liste di adiacenza, contenente puntatori ai nodi del grafo..
Però anche in questo modo mi pare un po' contorto..
Originally posted by Bloom
Beh...il progetto è un pochetto contorto![]()
__________________
Eidolon64|Blog
Originally posted by Joy88
Ho un albero x i profili..
e x ogni nick voglio fare un albero degli amici di nick (ponendo nick come radice)..
Bloom esattamente quello che hai detto..!!
Però come posso accedere ad un albero con radice pietro +ttosto che uno con radice carlo??
..in alternativa.. dici di fare in un altro modo??
Originally posted by Joy88
Ho un albero x i profili..
e x ogni nick voglio fare un albero degli amici di nick (ponendo nick come radice)..
Bloom esattamente quello che hai detto..!!
Però come posso accedere ad un albero con radice pietro +ttosto che uno con radice carlo??
..in alternativa.. dici di fare in un altro modo??
Originally posted by Gehur
io non userei nick come radice dell'albero amici, quando inserisci un nuovo profilo metti il campo amici a NULL, quando devi inserire un nuovo amico, come radice avrai il campo amici del profilo,ovviamente amici deve essere un tipo nodo albero
quando dovrai cercare un amico di nick, basta fare una ricerca partendo da nick->amici..sempre usando strcmp visto che sono stringhe
__________________
Eidolon64|Blog
Originally posted by Shaper
..o in alternativa il campo amici è un puntatore a un albero contenente gli amici dell'utente nick. Io di primo acchito l'ho pensato così..
Originally posted by hyperion
per forza..che tu lo faccia con liste o alberi..
__________________
Eidolon64|Blog
ecco si,è quello che intendevo
piuttosto qualcuno mi sa dire cosa serve il campo predecessore nell'algoritmo di visita grafo in ampiezza bfs.. ho buttato una bozza in C dell'algoritmo presente sul libro a pg 455, ma non ho usato il capo pigreco, non ne vedo l'utilità..
Ciao A tutti,
nell'input di esempio del progetto c'è scritto "System" a posto di "system".
Ho mandato un'email al professore e mi ha detto che tutti i comandi iniziano con la lettera minuscola(quindi "system")
Ciao
Laura
Originally posted by Bloom
Ciao A tutti,
nell'input di esempio del progetto c'è scritto "System" a posto di "system".
Ho mandato un'email al professore e mi ha detto che tutti i comandi iniziano con la lettera minuscola(quindi "system")
Ciao
Laura

__________________
Eidolon64|Blog
Originally posted by Shaper
Grazie dell'avvertimento!![]()
Originally posted by Gehur
ecco si,è quello che intendevo
piuttosto qualcuno mi sa dire cosa serve il campo predecessore nell'algoritmo di visita grafo in ampiezza bfs.. ho buttato una bozza in C dell'algoritmo presente sul libro a pg 455, ma non ho usato il capo pigreco, non ne vedo l'utilità..
adesso lo riguardo
ma io la distanza la incremento..non è che predecessore mi seve se voglio costruire l'abero??
comunque ci sto ancora ragionando
Originally posted by Gehur
ma io la distanza la incremento..non è che predecessore mi seve se voglio costruire l'abero??
comunque ci sto ancora ragionando
a ok ok, adesso vediamo di implementarlo ![]()
Scusate, ho un problema con la funzione strcpy().
Quando compila mi da questo warning:
faccialibro.c:380: warning: incompatible implicit declaration of built-in function 'strcpy'
L'ho usata per esempio in questa funzione:
void status_mod(element *ele, char *str){
strcpy(ele->status, str);
}
Nonostante questo mi sembra che funzioni tutto regolarmente, ma se mi da quel warning qualcosa di storto ci dev'essere...
Anche a voi da questo problema?
Ah, compilo con gcc attraverso NetBeans per Mac
__________________
Eidolon64|Blog
be ele è di tipo element, str è di tipo char..
la strcpy copia da stringa a stringa(da char a char)
Originally posted by Shaper
Scusate, ho un problema con la funzione strcpy().
Quando compila mi da questo warning:
faccialibro.c:380: warning: incompatible implicit declaration of built-in function 'strcpy'
L'ho usata per esempio in questa funzione:
void status_mod(element *ele, char *str){
strcpy(ele->status, str);
}
Nonostante questo mi sembra che funzioni tutto regolarmente, ma se mi da quel warning qualcosa di storto ci dev'essere...
Anche a voi da questo problema?
Ah, compilo con gcc attraverso NetBeans per Mac
Originally posted by Gehur
be ele è di tipo element, str è di tipo char..
la strcpy copia da stringa a stringa(da char a char)
Originally posted by hyperion
prova ad usare un puntatore di appoggio
char* w;
ele->status = strcpy(w,str);

__________________
Eidolon64|Blog
Solito quesito mattutino:
amico* trovaAmico(amico *a, char *nick)
{
amico *app = malloc(sizeof(amico));
app = a;
while(app!=NULL)
{
if (strcmp(nick, app->nome)==0)
return app;
app = app -> next;
}
return NULL;
}
Mi va in segmentation fault (strano eh!) alla strcmp nonostante abbia rincontrollato che il tipo amico abbia veramente un campo nome.. ovviamente char..
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Joy88
Solito quesito mattutino:
amico* trovaAmico(amico *a, char *nick)
{
amico *app = malloc(sizeof(amico));
app = a;
while(app!=NULL)
{
if (strcmp(nick, app->nome)==0)
return app;
app = app -> next;
}
return NULL;
}
Mi va in segmentation fault (strano eh!) alla strcmp nonostante abbia rincontrollato che il tipo amico abbia veramente un campo nome.. ovviamente char..
Ho provato come dicevi tu ma non cambia niente.. e debuggando mi va in seg fault sulla strcmp...
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Joy88
Ho provato come dicevi tu ma non cambia niente.. e debuggando mi va in seg fault sulla strcmp...
hai provato ad usare valgrind?
è un ottimo tool che ti permette di visualizzare gli errori di allocazione di memoria e i memory leak.
Originally posted by Joy88
Solito quesito mattutino:
amico* trovaAmico(amico *a, char *nick)
{
amico *app = malloc(sizeof(amico));
app = a;
while(app!=NULL)
{
if (strcmp(nick, app->nome)==0)
return app;
app = app -> next;
}
return NULL;
}
Mi va in segmentation fault (strano eh!) alla strcmp nonostante abbia rincontrollato che il tipo amico abbia veramente un campo nome.. ovviamente char..
Originally posted by Bloom
se chiedi di stampare il nome dell'amico a lo stampa?
Originally posted by Shaper
Scusate, ho un problema con la funzione strcpy().
Quando compila mi da questo warning:
faccialibro.c:380: warning: incompatible implicit declaration of built-in function 'strcpy'
L'ho usata per esempio in questa funzione:
void status_mod(element *ele, char *str){
strcpy(ele->status, str);
}
Nonostante questo mi sembra che funzioni tutto regolarmente, ma se mi da quel warning qualcosa di storto ci dev'essere...
Anche a voi da questo problema?
Ah, compilo con gcc attraverso NetBeans per Mac
Originally posted by Johnny88
ma string.h l'hai incluso?
__________________
Eidolon64|Blog
Originally posted by Bloom
se chiedi di stampare il nome dell'amico a lo stampa?
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
se sviluppi con linux prova ad usare valgrind che ti dice il perchè e il dove di una segmentation fault
Uso il dev c in ambiente windows.........
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
ah ok, ma voi per il cammino minimo che algoritmo usate?
Originally posted by Joy88
cmq no, non lo stampa..
Dietro consigli l'ho cambiato in questo modo:
amico* trovaAmico(amico* a, char *nick)
{
adiacenza* temp = malloc(sizeof(adiacenza));
temp->adiacente=a;
printf ("Ecco qui: %s\n", temp->adiacente->nome);
while(temp!=NULL)
{
if (strcmp(temp->adiacente->nome, nick)==0)
return temp->adiacente;
temp = temp -> next;
}
return NULL;
}
Inutile dire che il segfault ora va sulla printf e se la togliessi va sulla strcmp...
__________________
by Ð@rk§h@ÐØw
Originally posted by Joy88
cmq no, non lo stampa..
Dietro consigli l'ho cambiato in questo modo:
amico* trovaAmico(amico* a, char *nick)
{
adiacenza* temp = malloc(sizeof(adiacenza));
temp->adiacente=a;
printf ("Ecco qui: %s\n", temp->adiacente->nome);
while(temp!=NULL)
{
if (strcmp(temp->adiacente->nome, nick)==0)
return temp->adiacente;
temp = temp -> next;
}
return NULL;
}
Inutile dire che il segfault ora va sulla printf e se la togliessi va sulla strcmp...
allora ragazzi, andiamo con calma..ripartiamo da zero...se il seg faul è sulla printf vuol dire che temp->adiacente->nome ha contenuto random, oppure che temp->adiacente ha contenuto random, quindi
io come inizio stamperei a ed il suo contentuto (presumo a->nome)
poi se levi la printf, ti entra nel ciclo while? ti esegue l'if?? presumo di si visto che dici l'errore ti si sposterebbe sulla strcmp..cioè sul contenuto di temp->adiacente..
Johnny88 io uso visita in ampiezza di un grafo..
Posto le mie strutture amico e adiacenza.. e confido nel tuo aiuto darkshadow!!
typedef struct adiacenza
{
struct amico* adiacente;
struct adiacenza* next;
struct adiacenza* prev;
} adiacenza;
typedef struct amico
{
char *nome;
struct adiacenza *adiacenza;
struct amico *next,*prev;
int visited;
int stato_amicizia;
}amico;
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Gehur
Johnny88 io uso visita in ampiezza di un grafo..
be certo..la visita in ampiezza calcola il cammino minimo da un nodo a tutti gli altri nodi raggiungibili..ma non hai il libro??
Originally posted by Joy88
Posto le mie strutture amico e adiacenza.. e confido nel tuo aiuto darkshadow!!
typedef struct adiacenza
{
struct amico* adiacente;
struct adiacenza* next;
struct adiacenza* prev;
} adiacenza;
typedef struct amico
{
char *nome;
struct adiacenza *adiacenza;
struct amico *next,*prev;
int visited;
int stato_amicizia;
}amico;
__________________
by Ð@rk§h@ÐØw
Originally posted by Johnny88
Ma sei sicuro che la visita in ampiezza possa calcolare un cammino minimo?
__________________
Eidolon64|Blog
vi do una dritta che mi è stata molto utile per fare l'algoritmo BFS:
Pseudo-codifica dell'algoritmo:
per ogni vertice u di G diverso dalla sorgente s ripeti:
colore(u) = bianco
d(u) = infinito
pi(u) = null
end
colore(s) = grigio
d(s) = 0
pi(s) = null
Q = {s}
fintanto che la coda Q non e` vuota ripeti:
sia u il primo elemento estratto dalla coda Q
per ogni vertice v adiacente ad u ripeti:
se colore(v) = bianco allora
colore(v) = grigio
d(v) = d(u) + 1
pi(v) = u
aggiungi v alla coda Q
end
end
colore(u) = nero
end
Marco Liverani (liverani@mat.uniroma3.it)
 
raga la visita BFS c'è anche nei vecchi progetti
come del resto tutto quello ke serve per fare questo progetto.
__________________
by Ð@rk§h@ÐØw
sono condannato o no?
Ciao a tutti, arrivo purtroppo solo ora come potrete vedere da un altra discussione appena aperta.. volevo chiedervi francamente se secondo voi iniziando domani a man bassa il progetto e leggendomi tutto quello che avete postato finora ho qualche possibilità di farcela oppure il progetto è così complicato che non ce la posso fare comunque..
Un'altra cosa: ho seguito bene le lezioni di Aguzzoli ma non sono riuscito a ripassarmi i suoi appunti (400 pagine!!!!), ho solo i miei delle lezioni.. ora se ripasso il C con i suoi appunti (se nn ricordo male circa 200 pagine) poi secondo voi posso iniziare subito il progetto e spiluccare da quegli appunti le parti dell'implementazione delle strutture che mi servono o mi è indispensabile prima vedermi tutte le 400 e passa pagine con relativi esempi? e magari farmi pure gli esercizi dei laboratori?
Ditemi che ne pensate sinceramente..
__________________
In Blues We Trust
Originally posted by Shaper
Sì sì, lo fa, guarda a pag. 460 del Cormen.
Certo, da qui a implementarlo ce ne vuole, infatti io ci sto ancora sbattendo la testa!![]()
Re: sono condannato o no?
Originally posted by Joliet Jake
Ciao a tutti, arrivo purtroppo solo ora come potrete vedere da un altra discussione appena aperta.. volevo chiedervi francamente se secondo voi iniziando domani a man bassa il progetto e leggendomi tutto quello che avete postato finora ho qualche possibilità di farcela oppure il progetto è così complicato che non ce la posso fare comunque..
Un'altra cosa: ho seguito bene le lezioni di Aguzzoli ma non sono riuscito a ripassarmi i suoi appunti (400 pagine!!!!), ho solo i miei delle lezioni.. ora se ripasso il C con i suoi appunti (se nn ricordo male circa 200 pagine) poi secondo voi posso iniziare subito il progetto e spiluccare da quegli appunti le parti dell'implementazione delle strutture che mi servono o mi è indispensabile prima vedermi tutte le 400 e passa pagine con relativi esempi? e magari farmi pure gli esercizi dei laboratori?
Ditemi che ne pensate sinceramente..

__________________
Eidolon64|Blog
Originally posted by Johnny88
Ah ok grazie, l'ho chiesto perchè io ho studiato quasi solo sulle dispense di goldwurm e quando parla della visita in ampiezza non dice che si ottengono dei cammini minimi.
__________________
Eidolon64|Blog
Niente, Darkshadows. Non va.
Sono un po' demoralizzata.. son 3 gg che ci sto su...
ho cambiato il nome come mi avevi consigliato ma non c'è niente da fare..
ho provato a fare anche una printf ("%s", temp->adiacente->nome); ma non va.. non riesco ad accedere..
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Joy88
Niente, Darkshadows. Non va.
Sono un po' demoralizzata.. son 3 gg che ci sto su...
ho cambiato il nome come mi avevi consigliato ma non c'è niente da fare..
ho provato a fare anche una printf ("%s", temp->adiacente->nome); ma non va.. non riesco ad accedere..
Grazie per il consiglio.
Mi sa che mi dovrò implementare una coda
Scusate, una piccola domanda: ma voi utilizzate tutti una lista per rappresentare gli amici di un contatto? Perchè io, come ho già detto, sto usando un albero rb, per velocizzre le operazioni di ricerca degli amici, ma non vorrei avere problemi ad implementare la solita BFS (non mi ci sono ancora messo seriamente, ma avere un albero invece di una lista dovrebbe complicare un po' le cose, o no?) 
__________________
Eidolon64|Blog
Originally posted by Shaper
Scusate, una piccola domanda: ma voi utilizzate tutti una lista per rappresentare gli amici di un contatto? Perchè io, come ho già detto, sto usando un albero rb, per velocizzre le operazioni di ricerca degli amici, ma non vorrei avere problemi ad implementare la solita BFS (non mi ci sono ancora messo seriamente, ma avere un albero invece di una lista dovrebbe complicare un po' le cose, o no?)![]()
Re: Re: sono condannato o no?
Originally posted by Shaper
Guarda ti dirò che, una volta capito come realizzare un paio di funzioni complesse, il progetto in sè e per sè non è così difficile (alcuni degli anni passati mi sono sembrati molto peggio). Il problema è C: io ero completamente a digiuno di C e le lezioni di labortorio non le ho seguite con sufficiente attenzione, quindi ora mi blocco continuamente perchè magari so quello che devo fare ma mi perdo dietro puntatori, allocazione della memoria eccetera...
Quindi direi che (mio parere assolutamente personale), se hai già dimestichezza con C e magari, vedendo il progetto e questa discussione, te ne viene già in mente la struttura, penso che tu ce la possa fare. Viceversa se devi ancora metterti a studiare e non padroneggi ancora il linguaggio la vedo un po' dura...
Io personalmente ho iniziato una settimana e mezza fa e gran parte del tempo l'ho speso per prendere confidenza con C, e ora comincio decisamente a sentire il fiato sul collo (anche perchè il prof, come evidenziato da Joy, non si accontenta di un programma che "funzioni", ma vuole anche che sia efficiente e ottimizzato e questo vuol dire ulteriori giorni, dopo averlo finito, spesi per limaro e snellirlo..)
Io comunque mi metterei a lavorarci in ogni caso: tanto prima o poi lo dovrai dare questo esame e l'esercizio che farai adesso per apprendere il linguaggio e studiare la struttura del progetto di servirà sicuramente, anche solo per costruirti la forma mentis necessaria...
In bocca al lupo!![]()
devo assolutamente farcela se no non posso chiedere la tesi
mi darò ultra-da fare.. detto ciò vi do__________________
In Blues We Trust
scusate ragazzi ma voi gli alberi red black gli avete creati da zero???
io stò provando ad implementare gli alberi, ma l'iserimento non avviene correttamente, nel senso che la radice dell'albero è sempre NULL
be ho capito l'errore, io nel main gli passo rootG, nella insert però non facevo rootG = r dove r è la nuova radice..
ho un problema con i red black..
inserisco nodo c, è la radice, colore nero
inserisco b, colore rosso
inserisco a, colore rosso--->errore nella fix insert, perchè lui esegue un confronto su un campo che non esiste..riga 4 delllo pseudo codice a pagina 237
in pratica va nel ramo destro, ma non esiste ramo destro..come posso fare??
Su algoteam ci sono delle implemetazioni perfettamente funzionanti.
perchè non provi a guardare?
Fammi sapere
ho guardato ma non mi piacciono, non mi ci trovo..per ora ho provato ad implementarle a modo mio, che poi in pratica io non uso root e nil, il funzionamento è lo stesso.. rifaccio la domanda in un altra maniera + chiara credo
come funziona l''iserimento in un red black di:
f c a...
allora inserisco f, l'albero è vuoto-->radice nera
c, albero pieno, c < f, sinistra-->rosso
a, albero pieno, a < f, sinistra; a < c, sinistra--->rosso--->fix insert
errore..
ma a te te li inserisce senza problemi f c a?? chiedo perchè mi sembra un errore congenito della fix insert, anche quella presente su algoteam
Io non ho avuto alcun problema con gli rb di algoteam....
E' sempre andato tutto liscio....strano....Guarda le esercitazioni del prof aguzzoli,magari trovi qualcosa di piu chiaro.
Magari il tuo è un problema di puntatori
si è un problema di puntatori, ma sulle soluzioni proposte non è considerato, se guardi il tuo codice alla riga4/5 della fix insert trovarai una cosa del genere
if(x->up == x->up->up->left) {
y = x->up->up->right;
il problema è che x->up->up->right, cioè il ramo destro della radice, non esite se si inseriscono nell' ordine f c a..per questo ti ho chiesto di provare..
per la cronaca quello su algoteam funziona correttamente grazie all'uso delle sentinelle
Sono arrivata a implementare la visita BFS..
ho una difficoltà xò..
Io ho all'interno di ogni nodo del mio albero RB un grafo (fatto da liste di adiacenza) x le amicizie.....
quando chiamo la funzione x la visita BFS gli passo l'albero, e i due profili di cui voglio calcolare il percorso..
è giusto secondo voi?! va bene fare una BFS?
solo che poi mi è difficile calcolare il grado... devo scorrere l'albero e nel frattempo scorrere la lista di ogni nodo?!
Avete consigli?!
thanks...
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Joy88
Sono arrivata a implementare la visita BFS..
ho una difficoltà xò..
Io ho all'interno di ogni nodo del mio albero RB un grafo (fatto da liste di adiacenza) x le amicizie.....
quando chiamo la funzione x la visita BFS gli passo l'albero, e i due profili di cui voglio calcolare il percorso..
è giusto secondo voi?! va bene fare una BFS?
solo che poi mi è difficile calcolare il grado... devo scorrere l'albero e nel frattempo scorrere la lista di ogni nodo?!
Avete consigli?!
thanks...
__________________
Eidolon64|Blog
Originally posted by Shaper
Io non l'ho ancora implementata, ma a occhio e considerando i post passati direi che è la soluzione migliore e anch'io pensavo di passarle i due nodi e l'albero...
Adesso devo mettermi anch'io a pensarci su, perchèil codice su algoteam mi sembra abbia bisogno di essere adattato un bel po'...
Comunque credo che sia la direzione giusta..
Originally posted by hyperion
...se non hai ancora implementato la bfs come hai fatto a fare il consiglia amicizie?
__________________
Eidolon64|Blog
Originally posted by Shaper
Non mi è servita per il consiglia amicizie, ho usato una combinazione di visite inorder con un array di supporto...
Originally posted by hyperion
array?
__________________
Eidolon64|Blog
Domandone della Giornata:
nella funzione aggiuntiva la data la inserisco da input confermate???
Se la leggo come char (string
) c'è qualche funzione che me la trasforma in time_t / tm?? Su internet non ho trovato niente...
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by Joy88
Domandone della Giornata:
nella funzione aggiuntiva la data la inserisco da input confermate???
Se la leggo come char (string) c'è qualche funzione che me la trasforma in time_t / tm?? Su internet non ho trovato niente...
__________________
Eidolon64|Blog
ma per testare il programma l'esempio del professore sul pdf basta??
se scrivo tutto minuscolo è un problema??
a tal proposito, non esiste un modo per creare un file bat che esegua tutti i comandi, riscrivere tutto ogni volta non è il massimo..
Il progetto diceche bisogna fare numerosi test,
L'input è quello proposto dal testo, ricordati che tutti i system sono minuscoli (nel testo di input ci sono 2 System e non system).
Puoi rindirizzare l'input in questo modo:
esame.exe<input.txt
in input.txt ci metti tutti i comandi.
Spero di esserti stasta utile ciao
Laura
ooo grazie! provo subito
Originally posted by Bloom
Il progetto diceche bisogna fare numerosi test,
L'input è quello proposto dal testo, ricordati che tutti i system sono minuscoli (nel testo di input ci sono 2 System e non system).
Puoi rindirizzare l'input in questo modo:
esame.exe<input.txt
in input.txt ci metti tutti i comandi.
Spero di esserti stasta utile ciao
Laura
sembra andare tutto, meno male..
cavolo era una rottura scrivere tutto a mano..sopratutto parallipomeni del...
Originally posted by Gehur
sembra andare tutto, meno male..
cavolo era una rottura scrivere tutto a mano..sopratutto parallipomeni del...
si si..solo che ho usato gli alberi normali, almeno per avere una versione finita..
avevo pensato di provare a farlo con i rd black, ma la voglia è poca..be vediamo in questi giorni
Problemino problemuccio con la BFS ![]()
Cone lista di adiacenza uso un albero rb e quindi sfrutto una visita inorder a cui passo una funzione che, per ogni elemento dell'albero degli amici, fa le sue belle menate per calcolare il cammino. E fin qui tutto bene.
La mia perplessità è:
quando trovo il nodo di "arrivo" (il nodo q seguendo l'esempio del testo) come faccio a dirgli che ho finito e quindi di smettere e uscire da tutti i cicli/ricorsioni e ritornare semplicemente il grado di separazione trovato (che è un semplice intero che incremento mano a mano)? Potrei giocarmela con delle condizioni e impedirgli di incrementare il contatore se ho raggiunto il nodo p, ma mi scoccia fare un sacco di operazioni inutili.
E' come se mi servisse un break, ma non sono in un ciclo o uno switch, quindi non funziona..
Spero di essere stato sufficientemente chiaro (dubito
)
__________________
Eidolon64|Blog
be così su 2 piedi, ti devi fermare quando trovi il nodo di arrivo, quindi quando trovi nick2...
se la funzione che fai va da nick 2 una sola volta, basta metterci un if è diverso da nick..ma è propio pensata sul momento..
cioè io calcolo il cammino di tutti e poi cerco il nick2; la tua soluzione l'avevo pensata pure io, ma è bella impegnativa, non avevo voglia di mettermi ![]()
Originally posted by Gehur
be così su 2 piedi, ti devi fermare quando trovi il nodo di arrivo, quindi quando trovi nick2...
se la funzione che fai va da nick 2 una sola volta, basta metterci un if è diverso da nick..ma è propio pensata sul momento..
cioè io calcolo il cammino di tutti e poi cerco il nick2; la tua soluzione l'avevo pensata pure io, ma è bella impegnativa, non avevo voglia di mettermi![]()

__________________
Eidolon64|Blog
Originally posted by Shaper
Il mio porblema è che usando una visita ricorsiva per scansire l'albero una volta partita non so come fermarla, per evitare che, una volta trovato il nodo, mi scorra tutto l'albero inutilmente.
Ma alla fine credo che me ne fregherò altamente e al massimo se finisco in tempo ci penso!![]()
Originally posted by Shaper
Il mio porblema è che usando una visita ricorsiva per scansire l'albero una volta partita non so come fermarla, per evitare che, una volta trovato il nodo, mi scorra tutto l'albero inutilmente.
Ma alla fine credo che me ne fregherò altamente e al massimo se finisco in tempo ci penso!![]()
scusate ragazzi, ho un dubbio sul calcolo del tempo di esecuzione delle funzioni
ho un ciclo for da 0 a n, e dentro il ciclio faccio, per esempio, una ricerca su un albero binario, è corretto scrivere
O(n) + O(log(n))
oppure devo moltiplicare i 2 tempi??
Originally posted by Gehur
si è un problema di puntatori, ma sulle soluzioni proposte non è considerato, se guardi il tuo codice alla riga4/5 della fix insert trovarai una cosa del genere
if(x->up == x->up->up->left) {
y = x->up->up->right;
il problema è che x->up->up->right, cioè il ramo destro della radice, non esite se si inseriscono nell' ordine f c a..per questo ti ho chiesto di provare..


__________________
Eidolon64|Blog
io alla fine ho usato gli alberi di ricerca normali..non avevo voglia di sbattermi..comunque se usi l'implementazione di algo team è strano che ti dia errore,io usavo una mia versione senza sentinelle, l'errore nel mio caso avveniva perchè non c'era nessun dato, il ramo era vuoto,quindi nessun campo presente, invece in algoteam un dato c'è sempre ed è la sentinella NIL
infatti con l'abero dei profili va..si vede che c'è qualche "cazzatina" sull'albero amici..la primissima cosa che mi viene in mente dopo aver fatto un backup è di fare un copia incolla del codice di inserimento profili con quello di inserimento amici, con le opportune modifiche
Ragazzi, a questo punto dubito di capire l'italiano... o forse ormai sono definitivamente cotto...
Non riesco a inquadrare il punto del comando system ? nick nick2 group...
system ? nick nick2 group Il sistema stampa il grado di separazione relativo a group tra nick e nick2.
Se non esiste alcun profilo con nickname nick o nick2, oppure non esiste il
gruppo con titolo group, allora il sistema non fa niente.
Per favore, qualcuno può darmi una delucidazione in merito su cosa bisogna fare? (non il codice, ovviamente... ma proprio la spiegazione in italiano!!
)
Grazie mille!!!
 
è la stessa cosa del grado di separazione tra 2 nick (quello con il comando system ! nick1 nick) con in + il vincolo che i profili partecipino al gruppo group.
__________________
by Ð@rk§h@ÐØw
Originally posted by BeppeGoal
Ragazzi, a questo punto dubito di capire l'italiano... o forse ormai sono definitivamente cotto...
Non riesco a inquadrare il punto del comando system ? nick nick2 group...
system ? nick nick2 group Il sistema stampa il grado di separazione relativo a group tra nick e nick2.
Se non esiste alcun profilo con nickname nick o nick2, oppure non esiste il
gruppo con titolo group, allora il sistema non fa niente.
Per favore, qualcuno può darmi una delucidazione in merito su cosa bisogna fare? (non il codice, ovviamente... ma proprio la spiegazione in italiano!!)
Grazie mille!!!

__________________
Eidolon64|Blog
 
è come hai detto te però non è vero ke ti fermi apena trovi un profilo che non partecipa al gruppo perchè un profilo ha tanti amici e se un profilo non partecia al gruppo non è detto ke nessuno degli altri amici non partecipi al gruppo.
__________________
by Ð@rk§h@ÐØw
Originally posted by darkshadow
 
è come hai detto te però non è vero ke ti fermi apena trovi un profilo che non partecipa al gruppo perchè un profilo ha tanti amici e se un profilo non partecia al gruppo non è detto ke nessuno degli altri amici non partecipi al gruppo.
__________________
Eidolon64|Blog
allora se ci arrivi ad un certo nodo è perchè questo partecipa al gruppo e quindi a questo punto visiti i suoi amici i quali però possono partecipare o meno al gruppo.
da quello ke dici te se sono a nickN con nickN diverso da nick2 (nick di arrivo) quindi scorro i suoi amici e vedo ke uno di questi non partecipa al gruppo avrei grado infinito ma questo non è vero!! perchè può darsi ke uno tra gli amici di nickN che partecipa al gruppo mi porta a nick2.
__________________
by Ð@rk§h@ÐØw
In effetti anch'io avevo fatto considerazioni del genere, è proprio questo che m'ha creato dubbi, che non si riesca ad inquadrare il problema in pieno, perché tutte i vostri post secondo me hanno pieno senso.
Io sono costretto ad abbandonare (tanto lavoro per stampare quadratini facettine etc) chiedo qualche anima buona di rendere disponibile il suo lavoro appena possibile.
ringrazio anticipatamente
Se lo passo lo metto su io
Allora..
ti faccio un esempio pratico:
con -> intendo la relazione di amicizia confermata..
a->b->c->d->e
tra a ed e il grado è 4.. devi contare le "frecce" da a a e..
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Allora..
ti faccio un esempio pratico:
con -> intendo la relazione di amicizia confermata..
a->b->c->d->e
tra a ed e il grado è 4.. devi contare le "frecce" da a a e..
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Originally posted by darkshadow
allora se ci arrivi ad un certo nodo è perchè questo partecipa al gruppo
__________________
Eidolon64|Blog
Originally posted by Shaper
e no, il problema è che, se usi una bfs, l'arrivare a un certo nodo non implica necessariamente che il nodo sia anche membro del gruppo, perchè l'unica condizione da rispettare è che il nodo sia amico del precedente e del successivo nodo del cammino minimo. Per questo bisogna fare un controllo ogni volta, dato che il nodo considerato potrebbe non rispettare i criteri del comando...
Originally posted by hyperion
basta che nella coda che usi per la tua bfs metti solo i nodi con il flag di appartenenza al gruppo.,e poi ti comporti come in una normale bfs tra i due nick per calcolare il grado di separazione..
__________________
Eidolon64|Blog
Tanto x curiosità.. qual è il costo della vostra visita bfs x il grado?!
__________________
"Amor, ch’a nullo amato amar perdona, mi prese del costui piacer sì forte che, come vedi, ancor non m’abbandona."
*Dante*
Scusate, ma voi cosa usate per fare il debug? Perchè io mi sono fatto un file .txt con l'input di esempio del prof e poi dalla shell redireziono l'input.
Peccato che in certe condizioni mi da bus error e io non capisco il perchè!
Prima avevo usato net Beans con il plugin per il C per il debug e mi trovavo bene, ma non risco a passargli un file come input e rimettere tutto a mano ogni volta è improponibile...
conoscete un debugger che permetta di redirezionare l'input come dalla shell?
Mio dio, mancano meno di tre giorni e questo continua a darmi bus error a caso! 


__________________
Eidolon64|Blog
Gcc ha il suo debug,prova quello
code:
void inorder(rbtreep *p, void (*op)(rbnodep *))
code:
inorder (albero, ????)
__________________
In Blues We Trust
Originally posted by Joliet Jake
code:
void inorder(rbtreep *p, void (*op)(rbnodep *))
code:
inorder (albero, ????)
__________________
Eidolon64|Blog
Originally posted by Joliet Jake
code:
void inorder(rbtreep *p, void (*op)(rbnodep *))
code:
inorder (albero, ????)
ok grazie..
un altra cosa IMPORTANTISSIMA
ma scusate se un nodo viene creato ed inserito CON una chiave ed IN BASE alla chiave che è un intero.. ed io non voglio che sia un intero il nucleo fondamentale del nodo perchè nel mio caso invece è un profilo o un gruppo, allora sono davanti ad un dilemma
__________________
In Blues We Trust
il profilo è un puntatore a char ,i confronti li puoi fare tutti con strcmp
appunto, ok menomale 
per l'inorder quindi basta una cosa del genere
code:
void printnames(nodep* tizio) { bla bla }
code:
inorder (root, printnames)
__________________
In Blues We Trust
Originally posted by Joliet Jake
appunto, ok menomale
per l'inorder quindi basta una cosa del genere
code:
void printnames(nodep* tizio) { bla bla }
code:
inorder (root, printnames)
__________________
Eidolon64|Blog
puoi fare anche cosi...
void inorder(nodep *r, nodep *nil){
if(r!=nil){
inorder(r->left,nil);
printf("%s\n",r->nomeprofilo);
inorder(r->right,nil);
}
}
poi per chiamarla correttamente fai inorder(tree->root,tree->nil);
cosi sei sicuro che ti scandisce tutto l'albero
dopo quanto sapremo se abbiamo passato il progetto??
non lo so.......spero che ci diano tempo di ripassare
Originally posted by Shaper
Sì, però di solito all'inorder si passa l'albero, non un nodo...
__________________
In Blues We Trust
| All times are GMT. The time now is 11:12. | Pages (3): « 1 2 [3] Show all 417 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.