.dsy:it. Pages (9): « First ... « 2 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 mark on 05-06-2010 19:22:

Originally posted by Spr1gg4N
mmm si potrebbe una soluzione...però prima cmq bisogna eliminare tutti i nodi altrimenti la memoria è cmq occupata.


sporca numero 2

usare la funzione inorder() per visitare tutto l'albero e usare nodedelete() o similare per eliminare tutti i nodi

infine eliminare la radice con NULL

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by Spr1gg4N on 06-06-2010 09:45:

esatto.

Qualche idea sulla mia domanda riguardo la funzione lineare?
E' l'ultima cosa che mi manca per finire il progetto ma sono bloccato :(


Posted by kalbiz on 06-06-2010 18:17:

Originally posted by Spr1gg4N
Per quanto riguarda la funzione lineare ho un paio di domande:
1) se non esiste una componente che stia nello spazio tra due ganci che si fa? Si lascia vuoto quello spazio oppure si stampa il messaggio di errore?

2) nell'esempio 2, come secondo componente mette c1 oppure c2 che hanno entrambi estensione 12....come mai non sceglie c3 che è più corto dei precedenti ma ha estensione maggiore (24)?

EDIT:
-------------
quindi come soluzione possibile dell'esempio 2 io metterei anche:
69: (<c5,2>,<c3,7>,<c1,17>,<c6,24> ) oppure
69: (<c5,2>,<c3,7>,<c2,17>,<c6,8> )

voi che dite?



nelle specifiche dice che possono esserci anche diverse soluzioni per i dispositivi, basta che siano di dimensione massima ... quindi dovrebbe andare bene ...
io almeno ho interpretato così ...


Posted by mostrielo on 06-06-2010 21:28:

Originally posted by Spr1gg4N

Qualche idea sulla mia domanda riguardo la funzione lineare?
E' l'ultima cosa che mi manca per finire il progetto ma sono bloccato :(


Per l'operazione lineare si può procedere così:
1) opeazione 'c': in fase di costruzione dell'albero di ricerca (o rb) dei Componenti per Id, costruite un'altro albero ordinato per Area (per comodità si può aggiungere alla struct Componente l'attributo Area (l x h))
2) operazione 'l': fatevi dare dall'albero dei Componeneti per Area il max e provate a posizionarlo sul primo gancio dato (cioè se la lunghezza del rettangolo è <= alla distanza tra il primo e il secondo gancio):
- se ci sta lo appendete al gancio e vi fate dare il predecessore (di quello con area max corrente) e ripartite dal gancio successivo, se non ci sta provare a posizionarlo sul secondo gancio e cosi fino eventualmente fino all'n-esimo gancio;
- se non ci sta su nessun gancio dato, vi fate dare il predecessore (di quello con area max corrente) e ripetete a partire sempre dal primo gancio libero;
- tutto ciò finché non avete posizionato un Componente su ogni gancio dato oppure, a forza di chiedere il predecessore non avete percorso tutto l'albero (ovvero siete arrivati a quello con Area min). Se avete percorso tutto l'albero e non avete posizionato un rettagolo su ogni gancio dato allora non esiste un dispositivo lineare adeguato.


Posted by carla86 on 06-06-2010 21:52:

Originally posted by kalbiz
se ho anche solo un componente che si adatta ad uno dei ganci perchè non dovrebbe costruire un dispositivo ??
cioè
c 1 2 3 2 5
c 2 3 4 3 5

l 2 4 5

dovrebbe restituire
c 1 2 3 2 5


il comando lineare ke hai scritto tu forma un dispositivo composto da due componenti. quindi se nn ci sono due componenti che si adattano a quelle distanze allora nn ce un dispositivo adatto


Posted by carla86 on 06-06-2010 21:55:

Originally posted by misterx
io ho toccato il meno possibile evitando di eliminare quello che non è strattamente chiaro, al massimo viene passato un parametro che non viene usato in questa implementazione


grazie!! poi ho capito ke la funzione in più ke parlava d parametri era semplicemente una qualsiasi funzione (io l'ho sostituita con la printf) e nell'intestazione d funzione nn ho messo nulla.


Posted by carla86 on 06-06-2010 22:00:

Originally posted by Spr1gg4N
ragazzi ma voi come avete risolto per l'input del comando "o" (ordina)?
non riesco proprio a creare un array di int che aumenti dimensione man mano che viene inserito un nuovo numero in input -.-'


questo problema ce l'avevo anke io e la risp del prof è stata:
"la lista è una struttura dati dinamica.."
quindi forse t conviene usare una lista.


Posted by carla86 on 06-06-2010 22:24:

Originally posted by Spr1gg4N
ragazzi ma voi come avete risolto per l'input del comando "o" (ordina)?
non riesco proprio a creare un array di int che aumenti dimensione man mano che viene inserito un nuovo numero in input -.-'


se hai usato un albero binario d ricerca su algoteam ci sono la sia la funzione x cancellare un nodo dall'albero, sia la funzione x cancellare l'albero.
mentre invece x l'albero red-black ce solo la funzione x cancellare un nodo..


Posted by carla86 on 06-06-2010 22:27:

Originally posted by Spr1gg4N
Per quanto riguarda la funzione lineare ho un paio di domande:
1) se non esiste una componente che stia nello spazio tra due ganci che si fa? Si lascia vuoto quello spazio oppure si stampa il messaggio di errore?

2) nell'esempio 2, come secondo componente mette c1 oppure c2 che hanno entrambi estensione 12....come mai non sceglie c3 che è più corto dei precedenti ma ha estensione maggiore (24)?

EDIT:
-------------
quindi come soluzione possibile dell'esempio 2 io metterei anche:
69: (<c5,2>,<c3,7>,<c1,17>,<c6,24> ) oppure
69: (<c5,2>,<c3,7>,<c2,17>,<c6,8> )

voi che dite?


per la domanda uno: io stamperei il messaggio d'errore,
in tutti quei casi in cui anke solo x uno spazio nn riesci a creare un dispositivo lineare stamperei il messaggio d'errore.
per la domanda due: il prof a ricevimento mi ha detto ke a lui va bene qualsiasi dispositivo lineare ke abbia estensione massima; e ke quelli scritti nel testo sono degli esempi ma potrebbero benissimo essercene altri.
a lui basta ke gliene stampi uno!!


Posted by carla86 on 06-06-2010 22:31:

Originally posted by mark
sporca numero 2

usare la funzione inorder() per visitare tutto l'albero e usare nodedelete() o similare per eliminare tutti i nodi

infine eliminare la radice con NULL


cavolo a qst nn c'avevo pensato..
mi sembra un'ottima idea!!!


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

ciao!!
qualcuno d voi ke ha implementato gli alberi di ricerca binaria e ha implementato anke la funzione di distruggere l'albero.
quando andate a compilare con -Wall e -ansi anke a voi da questo warning:

In function ‘distruggialbero’:
progetto.c:459: warning: suggest parentheses around assignment used as truth value

secondo voi da cosa è dovuto? vi copio la mia riga 459
while(p = cancella(p, p));

grazie


Posted by mostrielo on 07-06-2010 10:22:

Originally posted by carla86
ciao!!
qualcuno d voi ke ha implementato gli alberi di ricerca binaria e ha implementato anke la funzione di distruggere l'albero.
quando andate a compilare con -Wall e -ansi anke a voi da questo warning:

In function ‘distruggialbero’:
progetto.c:459: warning: suggest parentheses around assignment used as truth value

secondo voi da cosa è dovuto? vi copio la mia riga 459
while(p = cancella(p, p));

grazie


prova con while((p = cancella(p, p)));


Posted by carla86 on 07-06-2010 10:27:

grazie, ha funzionato mancavano una coppia di parentesi!!


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

sto impazzendo sull'ordinamento per costo...io mi ritrovo una lista su kiave id con dentro i componenti presi dall'albero. come faccio a ordinarli in base al costo? come avete fatto voi?


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

Originally posted by Guepe
sto impazzendo sull'ordinamento per costo...io mi ritrovo una lista su kiave id con dentro i componenti presi dall'albero. come faccio a ordinarli in base al costo? come avete fatto voi?


quando li inserisci, invece ke inserirli in ordine d id inseriscili direttamente in ordine d costo..


All times are GMT. The time now is 10:12. Pages (9): « First ... « 2 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.