.dsy:it. Pages (9): « First ... « 3 4 5 6 [7] 8 9 »
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 "Componenti Elettroniche" (http://www.dsy.it/forum/showthread.php?threadid=40479)


Posted by carla86 on 07-06-2010 13:17:

mi dite x favore come faccio a scrivere una funzione ke ritorna un'array d interi?

int *pos(lista *p, int nro)
{
int pos[nro];
/*faccio quello che devo fare*/
return pos;
}

può andare bene? se no com'è? grazie


Posted by Guepe on 07-06-2010 13:33:

Risolto!!ho abbandonato le liste e ho creato u nalbero nuovo e poi inorder fa tutto, rimane solo un problema....nn mi prende l'ultimo componente nella ricerca e nn so il perchè...bah continuo a far prove....


Posted by Guepe on 07-06-2010 13:46:

Originally posted by Guepe
Risolto!!ho abbandonato le liste e ho creato u nalbero nuovo e poi inorder fa tutto, rimane solo un problema....nn mi prende l'ultimo componente nella ricerca e nn so il perchè...bah continuo a far prove....


non è che nn mi prende l'ultimo, è inorder che mi restituisce solo due componenti dell'albero....


Posted by carla86 on 07-06-2010 14:12:

x la funzione lineare voi come fate? o meglio dopo aver letto le posizioni fate uno alla volta i componenti partendo da quello da mettere in prima posizione oppure partite da quello ke deve avere lunghezza minore..

mi spiego meglio con un esempio
l 2 7 17 24 26
partitè dal componente da mettere nella posizione due oppure partite dal componente da mettere in posizione 24 visto ke deve essere il più piccolo?

nel caso partite da quello più piccolo come fate?


Posted by Guepe on 07-06-2010 16:16:

proprio non riesco a farla andare sta funzione ordina.....mi stampa solo due valori dell'albero....non riesco a capire perke mi stampa solo la radice e il figlio sinistro cioe i componenti 24 e 7...


Posted by carla86 on 07-06-2010 16:24:

qualcuno ha fatto la funzione lineare?!?!

io mi sa ke sono fusa..
sono riuscita a leggere tutte le posizioni inseritemi cn il comando l e le ho memorizzate in una lista.
mi sono creata un'altro albero rb con i componenti ordinati per area (come da qualcuno suggerito).
ma ora nn so come calcolare, o meglio nn so dove memorizzare le distanze, ogni volta la distanza tra una posizione e la successiva x poter controllare ke il massimo ritornatomi dall'albero ordinato per area possa stare in quella posizione.

qualche idea??


Posted by mostrielo on 07-06-2010 17:01:

Originally posted by carla86
qualcuno ha fatto la funzione lineare?!?!

io mi sa ke sono fusa..
sono riuscita a leggere tutte le posizioni inseritemi cn il comando l e le ho memorizzate in una lista.
mi sono creata un'altro albero rb con i componenti ordinati per area (come da qualcuno suggerito).
ma ora nn so come calcolare, o meglio nn so dove memorizzare le distanze, ogni volta la distanza tra una posizione e la successiva x poter controllare ke il massimo ritornatomi dall'albero ordinato per area possa stare in quella posizione.

qualche idea??


Io ho usato degli array:

<< 2, 7, 17, 24, 26>> input

<< 2, 7, 17, 24>> : gancio
<< 5, 10, 7, 2>> : base (gancio[i+1] - gancio[i])
<<null,null,null,null>> : puntatori a Componente


Posted by Guepe on 07-06-2010 17:46:

Non so dove sbaglio ma dopo tre ore mi sto per mangiare il pc!!
Carla nella funzione ordina per creare un albero nuovo inserendo i componenti con kiave c (costo) tu come hai fatto? Hai riscritto le funzioni di inserimento dei componenti nell'albero? Cosi facendo mi continua a ordinarli per id anche se nelle due funzioni la posizione dei nodi è definita dalle equazioni con il costo come paramentro.....nn capisco come sia possibile...


Posted by carla86 on 07-06-2010 17:50:

Originally posted by Guepe
Non so dove sbaglio ma dopo tre ore mi sto per mangiare il pc!!
Carla nella funzione ordina per creare un albero nuovo inserendo i componenti con kiave c (costo) tu come hai fatto? Hai riscritto le funzioni di inserimento dei componenti nell'albero? Cosi facendo mi continua a ordinarli per id anche se nelle due funzioni la posizione dei nodi è definita dalle equazioni con il costo come paramentro.....nn capisco come sia possibile...


dove ci sono in confronti per intendetci il prof scrive k<nodo->campo tu per id hai scritto id<nodo.id ora scrivi c<nodo.costo

mi sa ci sono un paio d confronti.
e poi inorder è una funzione ricorsiva; tra le due chiamate ci metti la printf x farli stampare


Posted by Guepe on 07-06-2010 17:53:

Originally posted by Guepe
Non so dove sbaglio ma dopo tre ore mi sto per mangiare il pc!!
Carla nella funzione ordina per creare un albero nuovo inserendo i componenti con kiave c (costo) tu come hai fatto? Hai riscritto le funzioni di inserimento dei componenti nell'albero? Cosi facendo mi continua a ordinarli per id anche se nelle due funzioni la posizione dei nodi è definita dalle equazioni con il costo come paramentro.....nn capisco come sia possibile...


No scusa sbagliavo una funzione, riscrivendo le le funzioni di inserimento, inorder sull'albero mi stampa solo due nodi però ordinati giusti....


Posted by Guepe on 07-06-2010 17:57:

i confronti nelle due funzioni li faccio fare con il valore c passato e il valore del nodo gia presente e infatti funziona pero me ne stampa solo due:
nell'esempio del prof inorder mi da
24 1 2 3 3
7 3 4 6 2
ma il componente 23 nn lo stampa! son sicuro di averlo inserito nell'albero perke per precauzione mi son fatto fare una stampa dopo ogni inserimento.


Posted by Guepe on 07-06-2010 18:27:

Originally posted by Guepe
i confronti nelle due funzioni li faccio fare con il valore c passato e il valore del nodo gia presente e infatti funziona pero me ne stampa solo due:
nell'esempio del prof inorder mi da
24 1 2 3 3
7 3 4 6 2
ma il componente 23 nn lo stampa! son sicuro di averlo inserito nell'albero perke per precauzione mi son fatto fare una stampa dopo ogni inserimento.

ci rinuncio.....mettendo altri componenti da ordinare va tutto ok, col componente 23 mi da questo output sbagliato, nn riesco a capire dove sia l'errore visto ke la funzione è identica a quella per creare l'abero normale apparte il fato che cambio la kiave.


Posted by carla86 on 07-06-2010 20:59:

Originally posted by mostrielo
Io ho usato degli array:

<< 2, 7, 17, 24, 26>> input

<< 2, 7, 17, 24>> : gancio
<< 5, 10, 7, 2>> : base (gancio[i+1] - gancio[i])
<<null,null,null,null>> : puntatori a Componente


scusami ma hai usato degli array gia dall'inizio quando hai letto l'input oppure con l'input letto e messo in un'altra struttura (tipo io l'ho messo in una lista) hai costruito i tre array?
l'ultimo array sarebbero dei puntatori ai nodi dell'albero giusto?


Posted by carla86 on 07-06-2010 21:34:

ho un'altra domanda, una volta ke mi sono fatta dare il massimo dall'albero in cui ci sn i nodi ordinati per area quale tra queste due funzioni mi da il suo precedente?
nodorb *treesucc(alberorb *r, nodorb *q)
{
nodorb *qq;
if(q->f_destro != r->sentinella)
return rbtmin(q->f_destro,r->sentinella);
qq = q->padre;
while(qq != r->sentinella && q == qq->f_destro) {
q = qq;
qq = qq->padre;
}
return qq == r->sentinella ? NULL : qq;
}

nodorb *treepred(alberorb *r, nodorb *q)
{
nodorb *qq;
if(q->f_sinistro != r->sentinella)
return rbtmax(q->f_sinistro,r->sentinella);
qq = q->padre;
while(qq != r->sentinella && q == qq->f_sinistro) {
q = qq;
qq = qq->padre;
}
return qq == r->sentinella ? NULL : qq;
}

a logica vi direi treepred ma siccome in qst momento nn sono sicura d nulla ve lo chiedo..


Posted by carla86 on 07-06-2010 22:20:

altra domanda:
come si stampa un array di puntatori a una struttura nodo di un albero red-black?
a sto punto nn è più semplice che i componenti li si mettano in una lista a parte con solo le caratteristiche invece che come puntatori a una struttura?


All times are GMT. The time now is 08:28. Pages (9): « First ... « 3 4 5 6 [7] 8 9 »
Show all 127 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.