 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[Algoritmi e strutture dati - Torelli] Progetto 6 aprile Clicca QUI per vedere il messaggio nel forum |
livio_82 |
Pronti?
Mi metto apripista per questo argomento che sicuramente avrà un seguito enorme =)
Speriamo che sia la volta buona... |
Dante |
Concordo...
Speriamo!!! |
eugenio_2 |
Originally posted by livio_82
Pronti?
Mi metto apripista per questo argomento che sicuramente avrà un seguito enorme =)
Speriamo che sia la volta buona...
E' molta la gente bocciata al progetto di solito? |
livio_82 |
non credo sia una questione di bocciatura.
Diciamo che molti non arrivano ad avere un progetto funzionante, quindi:
a) non consegnano
b) consegnano e viene cestinato senza esser valutato
ai posteri le conclusioni |
loreste |
Io faccio il programmatore da 4 anni ma sono MOLTO preoccupato per il progetto.
Sono dell'idea cmq che se ci diamo una mano a vicenda riusciamo a farlo.
Per Livio 82 mi hai copiato il logo:D
Cmq Sempre Atalanta!!! |
Moffone |
volevo farlo paritre io questo TD! :cry:
Vabbè... martedì mattina si scatenerà il putiferio!!!!!!!! |
t3mp0 |
Prepariamoci al progetto
:] |
loreste |
Dovrebbe essere questione di minuti per l'uscita del progetto, e i miei nervi stanno saltando:twisted: |
Bloody |
non andiamo in panico prima del tempo....
andiamoci dopo che almeno ce ne sara' una buona ragione!
su un bel respiro profondo!! |
Polo |
me sembra molto simile all'altro se non fosse per l'inviluppo e i segnali... |
pincopallino |
Originally posted by Polo
me sembra molto simile all'altro se non fosse per l'inviluppo e i segnali...
....e la polarità....=D
cmq leggendolo mi sono già venuti i primi dubbi..... |
Polo |
...si esattamente gli stessi dello scorso progetto :
- che struttura usare per memorizaare i filtri
e nuovi :
- che algoritmo usare per calcolare MCD
Cmq mi sembra che il proff abbia dato + aiuti tra le righe del testo
anche perchè non penso che siano stati tanti a passare lo scorso progetto |
Moffone |
L' algoritmo dell' MCD viene spiegato nel paragrafo 33.2 del libro! |
Tosh |
Non ho ancora letto attentamente il testo del progetto, ma sembra avere qualcosa in comune con il progetto precedente: non è che qualcuno che ha passato l'ultimo progetto e che quindi, magari, ha fatto anche l'orale può postare due righe sulla soluzione più adatta a quel progetto e sul perchè della soluzione? Se sapete di qualcuno che sa e tace, fate un'opera buona, convincetelo a condividere i frutti della sua esperienza con noi. :-) |
Drake83 |
Originally posted by Tosh
Non ho ancora letto attentamente il testo del progetto, ma sembra avere qualcosa in comune con il progetto precedente: non è che qualcuno che ha passato l'ultimo progetto e che quindi, magari, ha fatto anche l'orale può postare due righe sulla soluzione più adatta a quel progetto e sul perchè della soluzione? Se sapete di qualcuno che sa e tace, fate un'opera buona, convincetelo a condividere i frutti della sua esperienza con noi. :-)
ciao! premetto ke nn ho letto il testo del nuovo progetto ma se ti puo' aiutare posto come ho fatto il progetto "filtri": ho usato un albero rb x salvare e gestire i filtri mentre x il calcolo delle distorsioni ho usato liste linkate doppiamente.il mio progetto funzionava e mi ha dato 27.
:ciao: |
mitnik |
Ma che tipo di controlli hai fatto per verificare il grado di annidamento? Hai dovuto usare una struttura dati di supporto per memorizzare il rettangoli? Help
Non ho ben capito come trovare l'inviluppo,perchè il rettangolo tratteggiato è l'inviluppo di D ed F. Non era sufficiente un rettangolo con il vertice alto a sx corrispondente con quello di D e il vertice basso a dx corrispondente con quello di F? |
t3mp0 |
no xchè il rettangolo devi anche ipotizzare di inserirlo ... quindi per le regole 1,2,3, nn puoi ... esattamente xchè nella 3 dice che I={v} .......
almeno ... a me pare così |
Polo |
ma non puo essere postato codice nemmeno dello scorso progetto ?? |
Benjamin |
Non ho letto il testo ma rispondo alla domanda su quale era la soluzione migliore per il prog scorso!
(l'ho chiesto direttamente ad ad Aguzzoli)
Albero Bilanciato (Rb o altri se ne conoscete) per rappresentare i filtri e liste per rappresentarne il grado di annidazione!
Quindi una specie di giusto mix delle due!
Se volete prendere un bel voto pensate bene alla progettazione e alle strutture dati da usare...è sicuramente la parte importante del progetto! Se funziona meglio!
(Io l'ho discusso con Aguzzoli non so se vale l'ho stesso per chi lo fa con l'assistente di Torelli!) |
Skanky |
ciao, non riesco a capire una cosa.
Nell'esempio di input e output l'ultima riga di out put è 2 e dovrebbe corrispondere all' ultima G (grado piano).
Pero' dopo le varie cancellazioni di filtri a me il grado del piano risulta 1 visto rimangono 3 filtri isolati
Che ne dite mi sto sbagliando? |
paletta |
Usare gli alberi bilanciati ok.... ma cosa usare come chiave?? |
loreste |
Vorrei capire una cosa, se salvo i filtri in un albero binario (di ricerca o Rb) il primo filtro che inserisco è la radice, quando arrivano i filtri successivi in base a cosa decido se metterlo a sx o a dx :?
Grazie |
sonica |
Originally posted by Skanky
ciao, non riesco a capire una cosa.
Nell'esempio di input e output l'ultima riga di out put è 2 e dovrebbe corrispondere all' ultima G (grado piano).
Pero' dopo le varie cancellazioni di filtri a me il grado del piano risulta 1 visto rimangono 3 filtri isolati
Che ne dite mi sto sbagliando?
anche a me sembra che sia 1 anzichè 2, qualcun altro può correggerci? |
recoil |
Originally posted by loreste
Vorrei capire una cosa, se salvo i filtri in un albero binario (di ricerca o Rb) il primo filtro che inserisco è la radice, quando arrivano i filtri successivi in base a cosa decido se metterlo a sx o a dx :?
Grazie
devi stabilire una tua relazione di maggiore - minore. ad esempio puoi stabilire che se il vertice in alto a sinistra del rettangolo ha come ascissa un valore minore va a sinistra altrimenti va a destra |
Skanky |
Originally posted by sonica
anche a me sembra che sia 1 anzichè 2, qualcun altro può correggerci?
Secondo me è un errore del prof, forse dovremmo scrivergli, ci ho pensato e ripensato e non mi sembra che ci possa essere un errore. |
loreste |
Sono indeciso tra memorizzare i filtri in un albero o in una lista, perchè quando devo dire il grado di annidamento di un filtro X devo cmq scorrere tutti i nodi per vedere se quel nodo contiene un filtro annidato a X.
Per questo ho pensato alle liste, gli alberi sono migliori delle liste in caso di ricerca, ma io devo sempre confrontare tutti i nodi, percui non ne vedo la neccesità.
Cosa dite?????? |
Skanky |
Originally posted by loreste
Sono indeciso tra memorizzare i filtri in un albero o in una lista, perchè quando devo dire il grado di annidamento di un filtro X devo cmq scorrere tutti i nodi per vedere se quel nodo contiene un filtro annidato a X.
Per questo ho pensato alle liste, gli alberi sono migliori delle liste in caso di ricerca, ma io devo sempre confrontare tutti i nodi, percui non ne vedo la neccesità.
Cosa dite??????
Diciamo che se fai un ordinamento in un albero seconodo una coordinata potrebbe esserci il modo di dover attraversare l'abero fino a un certo punto e poi scartare gli altri nodi, detto questo io lo sto facendo come un grafo cioè implementato con liste.... l' importante è farcela in qualche modo |
Andre |
Originally posted by Skanky
ciao, non riesco a capire una cosa.
Nell'esempio di input e output l'ultima riga di out put è 2 e dovrebbe corrispondere all' ultima G (grado piano).
Pero' dopo le varie cancellazioni di filtri a me il grado del piano risulta 1 visto rimangono 3 filtri isolati
Che ne dite mi sto sbagliando?
No, infatti il testo del progetto è stato corretto.
http://homes.dsi.unimi.it/~aguzzoli/algo.htm |
pincopallino |
Originally posted by Skanky
Secondo me è un errore del prof, forse dovremmo scrivergli, ci ho pensato e ripensato e non mi sembra che ci possa essere un errore.
potrebbe anche essere che quando si chiede l'inviluppo dei rettangoli (12,9,15,12) e (10,7,12,10), il cui risultato è il rettangolo (2,2,15,12) che inizialmente non esiste, venga creato e inserito nel piano.
Nel caso in cui questo rettangolo venga inserito nel piano allora quella riga di output è giusta...
Però non è specificato da nessuna parte quindi cmq rimane un mistero da chiarire....
EDIT
ops il testo è stato corretto :D |
loreste |
Chi mi puo fare un esempio di come risulterebbe un albero con i primi 3 filtri dell'input di esempio?
Se ad esempio utilizzo il valore dell'ascissa per decidere se metterlo a dx o sx quando devo dire il grado di annidamento di un filtro devo scandire tutto l'albero quindi non ne vedo l'utilità.
Help!!!!!!
Non vorrei partire con il piede sbagliato, al momento sarei tentato di mettere tutto in una lista. |
zumzum |
Anche secondo me la lista è la cosa più semplice.... poi naturalmente potrei sbagliarmi! la struttura dati serve solo per memorizzare i dati... dipende quanto tempo vuoi perderci dietro... per esempio fare degli rb-alberi è una soluzione ottimale x i tempi di esecuzione ma da implementare è un bel casino... |
tetrinet |
Sono ammesse situazioni di questo tipo nel piano?
Le prime due stando alla definizione dovrebbero essere ammesse, e la terza anche, ma siccome non c'e' alcun esempio grafico simile mi e' venuto un dubbio.
code:
___
| |
|___|___
| |
|___|
___ ___
| | |
|___|___|
___
| |___
|___| |
| |
|___|
|
sonica |
sì l'intersezione è unidimensionale |
tetrinet |
Rileggendo i post relativi allo scorso progetto, mi sembra che la soluzione proposta da Dante non sia male:
http://www.dsy.it/forum/showthread....15&pagenumber=5
(e' il terzo post di Dante)
adattandola e tenendo conto che il nuovo nodo da inserire puo' *includere* il nodo gia' esistente.
Che dite?
Vedo pero' che Dante posta ancora anche in questo thread, quindi forse la soluzione non era quella ottima? |
Dante |
Grazie per avermi dato l'onore di una citazione... :-)
in effetti non ostante l'idea, non ho dato l'esame... ma per altri motivi... ora ci riprovo...
ciao! |
Moffone |
anche io avevo pensato ad una soluzione conme quella di Dante.
Però per quanto riguarda l'inserimento e il grado di annidamento e abbastanza facile. Ma per l'eliminazione secondo me è un macello! |
tetrinet |
Originally posted by Dante
Grazie per avermi dato l'onore di una citazione... :-)
Non c'e' di che :-)) |
tetrinet |
Originally posted by Moffone
anche io avevo pensato ad una soluzione conme quella di Dante.
Però per quanto riguarda l'inserimento e il grado di annidamento e abbastanza facile. Ma per l'eliminazione secondo me è un macello!
Perche' lo vedi cosi' incasinato?
Io stavo pensando a un albero binario di ricerca (non rb per ora, magari successivamente se riesco).
Se il nodo da cancellare non ha figli, no problem, lo cancello e stop; se ha un figlio, cancello il nodo e aggancio il figlio al padre del nodo cancellato; se ha due figli aggancio il figlio sx (il filtro incluso) al padre del nodo cancellato e il figlio dx al figlio sx. Sto tralasciando qualcosa? |
tetrinet |
MI e' venuto un dubbio sulla procedura di inserimento in un albero binario di ricerca del libro (tree-insert ); perche' dopo aver insrito il nuovo nodo (o prima) non mette a null i figli del nuovo nodo? |
tetrinet |
Originally posted by tetrinet
MI e' venuto un dubbio sulla procedura di inserimento in un albero binario di ricerca del libro (tree-insert ); perche' dopo aver insrito il nuovo nodo (o prima) non mette a null i figli del nuovo nodo?
Mi rispondo da solo: forse e' implicito che il puntatore al nodo utilizzato abbia tutti gli attributi a NULL gia' in partenza? |
Moffone |
Originally posted by tetrinet
Perche' lo vedi cosi' incasinato?
Io stavo pensando a un albero binario di ricerca (non rb per ora, magari successivamente se riesco).
Se il nodo da cancellare non ha figli, no problem, lo cancello e stop; se ha un figlio, cancello il nodo e aggancio il figlio al padre del nodo cancellato; se ha due figli aggancio il figlio sx (il filtro incluso) al padre del nodo cancellato e il figlio dx al figlio sx. Sto tralasciando qualcosa?
no, però a me sembra un macello.
Sopratutto quando devi risistemare l'albero! |
tetrinet |
Qualcuno sa dove si puo' trovare un algoritmo in C che, a partire da un albero binario, lo stampa graficamente? (E' a scopo di debug).
Grazie. |
mitnik |
Come procedono i lavori? spero per voi bene.
Io sono orientato sulla soluzione che utilizza le liste.
Il mio dubbio ora è sui controlli da fare sui filtri per verificare se possono o meno essere inseriti nel piano. Qualcuno ha qualche idea? Ciao |
Skanky |
Originally posted by mitnik
Come procedono i lavori? spero per voi bene.
Io sono orientato sulla soluzione che utilizza le liste.
Il mio dubbio ora è sui controlli da fare sui filtri per verificare se possono o meno essere inseriti nel piano. Qualcuno ha qualche idea? Ciao
Ma io penso di controllare le coordinate a riguardo e confrontandole con ogni filtri già immesso stabilire se ci sono intersezioni non monodimensionali. |
Skanky |
Originally posted by tetrinet
Rileggendo i post relativi allo scorso progetto, mi sembra che la soluzione proposta da Dante non sia male:
http://www.dsy.it/forum/showthread....15&pagenumber=5
(e' il terzo post di Dante)
adattandola e tenendo conto che il nuovo nodo da inserire puo' *includere* il nodo gia' esistente.
Che dite?
Vedo pero' che Dante posta ancora anche in questo thread, quindi forse la soluzione non era quella ottima?
Ma anche nello scorso progetto un nuovo nodo da inserire poteva includere (intedni annidare?) un altro filtro..
Forse non ho capito bene cosa intendevi |
Moffone |
Io ho dato un' occhiata al vecchio progetto e: oltre a poter essere inclusi-annidati, i filtri potevano anche intersecarsi.
|
loreste |
Io ho utilizzato le liste, e per finire il progetto mi manca solo il grado di un filtro (ho gia un algoritmo, ma devo ancora scriverlo) e l'inviluppo (al quale non ho ancora pensato).
Però mi è sorto un dubbio, se ricevo il seguente input
f 2 2 10 12 1 1
f 2 2 10 12 6 6
e 2 2 10 12
Quale filtro elimino?????
Tutti e due??? |
t3mp0 |
Se R e S hanno le stesse coordinate, quindi R=S, allora elimini tutti e due i rettangoli |
Skanky |
Originally posted by loreste
Io ho utilizzato le liste, e per finire il progetto mi manca solo il grado di un filtro (ho gia un algoritmo, ma devo ancora scriverlo) e l'inviluppo (al quale non ho ancora pensato).
Però mi è sorto un dubbio, se ricevo il seguente input
f 2 2 10 12 1 1
f 2 2 10 12 6 6
e 2 2 10 12
Quale filtro elimino?????
Tutti e due???
Esatto tutti e due!
Scusate invece una cosa ma quando immetto un nuovo filtro i 2 ultimi numeri sono già una coppia che identifica la polarizzazione o dati quei numeri che immetto mi calcolo la polarizzazione del filtro??
E stessa domanda per il caso" s x y " |
eugenio_2 |
Originally posted by Skanky
Ma anche nello scorso progetto un nuovo nodo da inserire poteva includere (intedni annidare?) un altro filtro..
Forse non ho capito bene cosa intendevi |
eugenio_2 |
Originally posted by loreste
Io ho utilizzato le liste, e per finire il progetto mi manca solo il grado di un filtro (ho gia un algoritmo, ma devo ancora scriverlo) e l'inviluppo (al quale non ho ancora pensato).
Però mi è sorto un dubbio, se ricevo il seguente input
f 2 2 10 12 1 1
f 2 2 10 12 6 6
e 2 2 10 12
Quale filtro elimino?????
Tutti e due??? |
zumzum |
qualcuno mi riesce a spiegare come l'esempio da 3 filtri di polarita (-13,4) (2,27) (-8,9) e segnale (31,200) riesca a far risultare (5,16) ??????? |
zumzum |
qualcuno mi riesce a spiegare come l'esempio da 3 filtri di polarita (-13,4) (2,27) (-8,9) e segnale (31,200) riesca a far risultare (5,16) ??????? |
0m4r |
Off-Topic: forse hai fatto qualche errore nel postare il messaggio, o forse hai dimenticato di fornire qualche info in piu! |
Gusher |
Perchè quando calcoli il segnale (distorto) uscente, devi polarizzare il risultato.
ciao |
tetrinet |
Originally posted by Skanky
Esatto tutti e due!
Scusate invece una cosa ma quando immetto un nuovo filtro i 2 ultimi numeri sono già una coppia che identifica la polarizzazione o dati quei numeri che immetto mi calcolo la polarizzazione del filtro??
E stessa domanda per il caso" s x y "
Per entrambi i casi devi calcolarla.
Infatti se guardi gli esempi ci sono un paio di inserimenti in cui y e' negativo. |
tetrinet |
Dubbio sul testo: la presenza di filtri uguali non influenza il grado di annidamento (se ne conta solo 1), ma invece influenza la polarita'? (cioe' si tiene conto di tutti)? |
Sonia |
Off-Topic: sposto nel thread del progetto di algo |
tom80 |
Ciao tetrinet. Se incontri due filtri uguali vai a modificare soltanto la loro polarità.Come nell'esempio dell'input del progetto,dove hai
f 4 3 7 6 -4 -6
e poi hai
f 4 3 7 6 11 17
il nuovo filtro posto nel piano sarà
4 3 7 6 13 20
Io ho fatto quasi ~ tutto il progetto, solo che ho problemi con la funzione che inserisce i filtri nel piano,o meglio ho problemi con la funzione che mi calcola il minor rettangolo, ch einclude tutti i filtri. Qualcuno è riuscito a risolvere questo problema?.Io sto realizzando il progetto con le liste di adiacenza. Ero andato a parlare con Fiorentini per il progetto Filtri e mi ha detto che un modo per risolverlo era con le liste di adiacenza.
Ciao a tutti e Buona Pasqua!!!! |
Skanky |
Originally posted by zumzum
qualcuno mi riesce a spiegare come l'esempio da 3 filtri di polarita (-13,4) (2,27) (-8,9) e segnale (31,200) riesca a far risultare (5,16) ???????
(31-(-13+2-8), 200-(4+27+9)
=>
(31 - (-19),200-(40))
(50,160)
l'mcd di 50 e 160 è 10
dividi per 10 entrambi
e risulta
(5,16) |
Skanky |
Originally posted by tetrinet
Per entrambi i casi devi calcolarla.
Infatti se guardi gli esempi ci sono un paio di inserimenti in cui y e' negativo.
Giusto!, grazie |
tetrinet |
Originally posted by tom80
Ciao tetrinet. Se incontri due filtri uguali vai a modificare soltanto la loro polarità.
Ciao.
Quindi quando ti trovi ad inserire un filtro uguale ad un altro non lo inserisci, ti limiti a modificare la polarita' di quello esistente? Quindi non tieni traccia del fatto che sul tuo piano ci sono n filtri uguali?
Originally posted by tom80
Come nell'esempio dell'input del progetto,dove hai
f 4 3 7 6 -4 -6
e poi hai
f 4 3 7 6 11 17
il nuovo filtro posto nel piano sarà
4 3 7 6 13 20
Non ti seguo, perche' 13 e 20?
Originally posted by tom80
Io sto realizzando il progetto con le liste di adiacenza. Ero andato a parlare con Fiorentini per il progetto Filtri e mi ha detto che un modo per risolverlo era con le liste di adiacenza.
Io sto provando con gli alberi, speriamo bene....
Originally posted by tom80
Ciao a tutti e Buona Pasqua!!!!
Grazie e buona Pasqua anche a te.
Ciao. |
Bloody |
Originally posted by tetrinet
[B]Ciao.
Quindi non tieni traccia del fatto che sul tuo piano ci sono n filtri uguali?
quando poi calcoli il grado di annidamento ne devi tenere conto, gli estremi sono compresi, quindi mi sa che non basta sommare le polarità...
Anch'io sto usando gli alberi, ma x chi ce l'ha fatta a febbraio, quanto tiene conto Aguzzoli della complessità?
Vabè che ormai sono partita in quarta con gli alberi, e vado avanti con quelli... |
tom80 |
quando fai il MCD tra -4 -6, dopo averli moltiplicati entrambi per -1, perchè y (-6) e' negativo, dopo averli anche polarizzati, ovvero dopo aver diviso sia 4 che 6 per due ottieni 2 3 come polarizzazione. Infine quando trovi i due filtri uguali
f 4 3 7 6 -4 -6
che ha polarizzazione
f 4 3 7 6 2 3
vai a sommare al filtro precedente ( f 4 3 7 6 2 3 ) la polarità del filtro
f 4 3 7 6 11 17
=> ( 2 + 11 ) = 13
=> ( 3 + 17 ) = 20
Scusa la poca chiarezza.Spero comunque di averti dato comunque una mano.
Ciao ciao Tom 80 |
tom80 |
Ciao Bloody.Credo che quando calcoli il gardo di annidamento del piano non tieni conto che ci sono due filtri uguali, perchè ilsecondo non lo vai effettivamente ad inserire, ma in caso di filtri uguali vai solo a modificare la polarità del primo filtro uguale agli altri, che hai inserito.Nel testo del progetto, credo che si dica, che il grado di annidamento di un filtro e più in generale del piano non dipende da quanti filtri ( il prof credo usi l'espressione forma ) uguali abbiano le stesse coordinate ( a,b,c,d ).Verrebbe a cadere la proprietà di propria inclusione.
Ciao a tutti.Tom 80 |
tetrinet |
Originally posted by Bloody
quando poi calcoli il grado di annidamento ne devi tenere conto, gli estremi sono compresi, quindi mi sa che non basta sommare le polarità...
No per l'annidamento non ne devi tenere conto, infatti i filtri devono essere *propriamente* inclusi. |
tetrinet |
Originally posted by tom80
quando fai il MCD tra -4 -6, dopo averli moltiplicati entrambi per -1, perchè y (-6) e' negativo, dopo averli anche polarizzati, ovvero dopo aver diviso sia 4 che 6 per due ottieni 2 3 come polarizzazione.
[....]
Chiarissimo, tnx, non sto ancora gestendo la polarizzazione per adesso inserivo i filtri con x e y non polarizzati, quindi facevo la somma degli x e y dei due filtri e non mi tornava; ovviamente invece vanno prima polarizzati.
Anche se in effetti ai fini di quanto richiesto dal progetto non cambia nulla se teniamo traccia dei filtri uguali o meno, forse sarebbe meglio chiedere a Fiorentini se e' una semplificazione ammessa o no, che ne dite? |
t3mp0 |
Se R e S hanno le stesse coordinate, quindi R=S, allora elimini tutti e due i rettangoli |
Skanky |
Nel caso che ci siano 2 filtri con un lato di intersezione
esempio
f 2 2 8 8 4 8
f 8 2 10 10 44 9
se chiediamo il segnale nel punto
p 8 3
che è sul lato comune dei due filtri
per esempio.
Devo tener conto delle polarizzazioni di tutti e due i filtri? |
tetrinet |
Originally posted by Skanky
Nel caso che ci siano 2 filtri con un lato di intersezione
esempio
f 2 2 8 8 4 8
f 8 2 10 10 44 9
se chiediamo il segnale nel punto
p 8 3
che è sul lato comune dei due filtri
per esempio.
Devo tener conto delle polarizzazioni di tutti e due i filtri?
Beh si' dovrebbe essere cosi', visto che il punto fa parte di entrambi i filtri. |
loreste |
Io sono alla fine del progetto(meno male), ho utilizzato una lista, il punto mancante è l'inviluppo, ho trovato 3 casi di cui 2 ho risolto e mi manca il terzo (chiaramente è quello più complesso)
Caso 1) Un filtro è figlio dell'altro percui l'inviluppo è il filtro padre.
Caso 2) Provo a costruire un rettangolo utilizzando i 2 vertici, se posso inserire il rettangolo, quello è l'inviluppo.
Caso 3) E' quando fallisce il caso 2, allora dovrei andare a prendere i padri, e ripetere il caso 2, ma questo non sempre è vero.....
Voi come calcolate l'inviluppo del terzo caso???????
Aiutatemi che poi io ho finito e sono a disposizione ad aiutare chi ne avesse bisogno.:D |
tom80 |
Se ho ben capito il filtro inviluppo e' il minimo filtro che contiene i due filtri, sempre se questi sono nel piano, e tutti gli altri filtri presenti nel piano.Per fare questo io ho costruito una funzione minx(filtr *q ), che mi restituisce il filtro, con le coordinate più piccole, che contiene i due filtri della funzione inviluppo e tutti i filtri già presenti nel piano.Io sto realizzando il progetto, come mi ha consigliato Fiorentini,con le liste d'adiacenza e per tovare il grado di un filtro e del grado piano uso la ricerca in ampiezza o per livelli.Tu come hai fatto?.Per creare la funzione minx(q), ho anche implementato anche una funziona ordina, molto simile all'insertion sort per ordinare l'array contenente tutte le coordinate dei filtri presenti nel piano.
Beato te.Io sto implementando la funzione punto e poi devo finire di sistemare tutto il progetto.Speriamo in bene.
Spero di esserti e di esservi stato d'aiuto.
A presto.
Ciao ciao Tom80 |
Bloody |
Io sono ancora abbastanza indietro.... e non mi è chiara una cosa: se alla fine la somma delle polarità dei filtri è maggiore del segnale, il segnale risultante è zero giusto?
Nell'esempio del prof c'è un caso del genere, precisamente la seconda volta che chiede di calcolare il segnale fuoriuscente da 5,5 mi viene questa situazione. Come fa ad uscirgli 9 e 17? |
loreste |
Per Tom80
Per quanto riguarda il calcolo del piano devi fare una funzione ricorsiva, elimini tutti i nodi con zero figli, quando arrivi al filtro che ti interessa esci dal ciclo, nel frattempo incrementi un contatore, il numero risultante e il grado del filtro.
Per il calcolo del grado piano, utilizzi la funzione piano, gli passi tutta la struttura e calcoli il grado di tutti i piani, memorizzi il maggiore grado che hai ed a questo numero sommi 1.
Ciao |
tom80 |
Grazie mille Loreste.Tu per rappresentare il figlio ch estruttura hai usato???.Ancora una lista?.La visita per ampiezza secondo te è la soluzione giusta per il grado del piano?
Ciao ciao Tom80 |
tom80 |
Ciao Bloody.Anche io devo finire di sistemare bene le cose.Per la funzione punto anche se somma delle polarizzazione dei filtri inclusi e' maggiore del segnale, non c'è problema.Quando faccio la sottrazione del segnale del piano e della somma delle polarizzazioni dei singoli filtri, controllo che la y del segnale sia positiva e poi sistemo le cose come nel caso di una semplice polarizzazione. ( ovvero moltiplico sia x che y per -1 e poi li divido per il MCD tra l'x e l'y risultante dalla sottrazione del segnale presente nel piano e dalla somma delle polarizzazioni dei singoli filtri.
Non so se sono stato molto chiaro.
Buon progetto.
Ciao ciao Tom80 |
loreste |
Ho usato una lista che tengo buona per tutto il progetto, senza fare ordinamenti.
L'unica cosa è che devo passare il puntatore a tutte le funzioni. |
Skanky |
Originally posted by loreste
Io sono alla fine del progetto(meno male), ho utilizzato una lista, il punto mancante è l'inviluppo, ho trovato 3 casi di cui 2 ho risolto e mi manca il terzo (chiaramente è quello più complesso)
Caso 1) Un filtro è figlio dell'altro percui l'inviluppo è il filtro padre.
Caso 2) Provo a costruire un rettangolo utilizzando i 2 vertici, se posso inserire il rettangolo, quello è l'inviluppo.
Caso 3) E' quando fallisce il caso 2, allora dovrei andare a prendere i padri, e ripetere il caso 2, ma questo non sempre è vero.....
Voi come calcolate l'inviluppo del terzo caso???????
Aiutatemi che poi io ho finito e sono a disposizione ad aiutare chi ne avesse bisogno.:D
Io ho risolto cosi.
una funzione con 4 vertici dati da input
trovo x min y min x mag e y mag confrontandoli.
Se questo rettangolone non è inseribile (la mia procedura di inseribilità mi dice quale rettangolo ha causato l'impossibilità di inserimento).
A sto punto la faccio ripartire ricorsivamente usando le coorditae maggiori calcolate precedentemente e le coordinate del rettangolo che reso impossibile l'inserimento...cosi mi ricalcola un rettangolone ancora piu grosso che contiene anche il rettangolo che rompeva le balle ...e cosi via fino a che la condizione di inserimento non è soddisfatta |
tetrinet |
Le specifiche del progetto indicano che non ci devono essere limiti sul numero e la grandezza dei filtri e sulla grandezza del piano.
Se pero' si memorizzano i filtri mediante le coordinate si pone gia' un limite alla grandezza dei filtri e del piano: se si dichiarano le coordinate int ad es. il piano non puo' essere piu' largo di 2^8 giusto?
Cosa ne pensate?
Stessa cosa per il livello di profondita'.
Altra cosa: si da' per scontata la correttezza dell'input: questo vuol dire non solo che ad esempio dopo una f ci saranno 6 valori, ma anche che le coordinate saranno interi >= 0 e x y interi? Quindi non si controlla nulla?
Grazie. |
Skanky |
Originally posted by tetrinet
Le specifiche del progetto indicano che non ci devono essere limiti sul numero e la grandezza dei filtri e sulla grandezza del piano.
Se pero' si memorizzano i filtri mediante le coordinate si pone gia' un limite alla grandezza dei filtri e del piano: se si dichiarano le coordinate int ad es. il piano non puo' essere piu' largo di 2^8 giusto?
Cosa ne pensate?
Stessa cosa per il livello di profondita'.
Altra cosa: si da' per scontata la correttezza dell'input: questo vuol dire non solo che ad esempio dopo una f ci saranno 6 valori, ma anche che le coordinate saranno interi >= 0 e x y interi? Quindi non si controlla nulla?
Grazie.
Beh diciamo che se ragioni in quel modo hai ragione nel senso che gli int sono limitati...
Pero' con lo stesso modello di pensiero allora le limitazioni ci saranno sempre perchè i computer hanno dei limiti fisici , sia per la rappresentazione dei dati sia per la memoria.
Solo la teoria non ha limitazioni.
Quello che si voleva intendere con quelle parole è che non devi limitarle con strutture dati fisse tipo matrici ed array.
Per quello che dici per l'input.Si non devi curarti che il tuo programma gestisca input sballati.
Pero' devi stare attento agli spazi bianchi nell' input come c' è scritto sulla descrizione |
tetrinet |
Originally posted by Skanky
Beh diciamo che se ragioni in quel modo hai ragione nel senso che gli int sono limitati...
Pero' con lo stesso modello di pensiero allora le limitazioni ci saranno sempre perchè i computer hanno dei limiti fisici , sia per la rappresentazione dei dati sia per la memoria.
Solo la teoria non ha limitazioni.
Quello che si voleva intendere con quelle parole è che non devi limitarle con strutture dati fisse tipo matrici ed array.
Ok perfetto grazie; la mia poteva sembrare una domanda retorica ma volevo avere qualche conferma :)
Magari portare le coordinate almeno a long int non sarebbe male cmq.
Originally posted by Skanky
Per quello che dici per l'input.Si non devi curarti che il tuo programma gestisca input sballati.
Pero' devi stare attento agli spazi bianchi nell' input come c' è scritto sulla descrizione
Si' per la lettura dovrebbe bastare prendere come riferimento uno degli esempi delle dispense di Fiorentini. |
Dante |
ho qualche problemino con la lettura...
primo: conviene usare scanf o getchar() per inserire la riga di comando nell'array?
secondo: come si fa a dirgli di terminare la lettura di una riga quando si batte invio?
io ho provato sia con scanf("%c", &nome_array[i]) sia con
nome_array[i]=getchar() ponendo la condizione !='\n' ... è giusto? a me non funziona, continua a aspettare input e non termina la lettura...
HELP! |
Moffone |
Ho un dubbio che riguarda l'inserimento di un filtro con le stesse coordinate di uno già presente nel piano.
Voi avete detto di non aggiungere un filtro nella struttura dati, ma di modificare la polarità di quello che già c'era facendo la somma, e anch'io pensavo di fare così...
Ma è sicuro che in questo modo quando si calcola il segnale di un punto di quel filtro, il risultato venga corretto?
Infatti la formula in mezzo a pag.2, dice di far la somma delle xi polarizzate, sottrarre il risultato dalla x del piano, fare lo stesso con le yi e solo alla fine calcolare la polarità.
Quindi l'ordine è:
somma,differenza,polarità.
Se invece noi calcoliamo direttamente la somma di due filtri uguali, dobbiamo calcolare subito la polarità e quindi l'ordine per lo stesso punto diventa:
somma,polarità,differenza.
E quindi ho l'impressione che il risultato venga diverso...
Ho sbagliato qualcosa io o effettivamente è così???
Grazie |
tom80 |
Ciao Dante.Per la lettura dell'input usa la scanf.L'array che intendi tu e' quello dove vai a mettere i valori di a,b,c,d,x,y ad esempio nella funzione f 2 2 12 10 2 -2?
Tom 80 |
tetrinet |
Qualcuno ha un po' di esempi di input con una buona varieta' di casi? |
Dante |
Originally posted by tom80
Ciao Dante.Per la lettura dell'input usa la scanf.L'array che intendi tu e' quello dove vai a mettere i valori di a,b,c,d,x,y ad esempio nella funzione f 2 2 12 10 2 -2?
Tom 80
Sì, è quello l'array. E come dimensione... lo metto di 80 spazi? è sufficiente? poi devo togliere gli eventuali spazi in eccesso e lasciarne solo uno tra i valori... conviene riversare il primo array in un secondo (dopo aver ridotto gli spazi in eccesso)? E mi conviene usare una funzione apposta?
Grazie! |
Dante |
Ma se tipo metto l'array di 80, e metto lo scanf all'interno di un for che riempie le caselle dell'array, scanf attende 80 battute prima di terminare... come faccio a dirgli di terminare quando batto invio? ho provato con un while(nome_array[i]!='\n' ma non funziona... come cavolo si fa? in pascal era eoln (end of line), in c????????
grazie! |
loreste |
Scusate, ma siete fuori strada, per leggere l'input basta la seguente riga di codice:
for(carattere=getchar(); isspace(carattere); carattere=getchar());
che tral'altro, se avete guardato le dispense di Fiorentini, usa sempre questa istruzione per leggere l'input.
Subito dopo il for mettete uno swith per i vari caratteri f i p q g G
e chiamate le vostre procedure.
Cmq RIPETO date un'occhiata alle dispense di Fiorentini , trovate tanti aiuti.
Non complicatevi la vita con inutili array!!!!!!!!!
:D |
tom80 |
Ciao io per leggere l'input ho usato un semplice do while.Ho dichiarato prima una variabile char ch e prima di entrare nel ciclo do while la inizializzo con una getchar().Poi ho utilizzato uno switch per distinguere i vari casi.Continuo così fino a quando ch != 'q' && ch != 'Q'.
Esempio
int a,b,c,d,x,y;
char ch;
ch = getchar();
do {
switch ( ch ) {
case 'f': case 'F':
scanf ( "%d%d%d%d%d%d", &a,&b,&c,&d,&x,&y);
if ( cerca ( q,a,b,c,d ) == NULL ) {
q = inserisci(a,b,c,d,x,y );
break;
......
......
default:
break;
}
ch = getchar();
}while ( ch != 'q' && ch != 'Q' );
}
La variabile q e' un puntatore alla lista vuota.Io sto realizzando il progetto con le liste di Adiacenza.
Spero di essere stato d'aiuto.
Ciao ciao Tom80 |
Skanky |
Originally posted by loreste
Per Tom80
Per quanto riguarda il calcolo del piano devi fare una funzione ricorsiva, elimini tutti i nodi con zero figli, quando arrivi al filtro che ti interessa esci dal ciclo, nel frattempo incrementi un contatore, il numero risultante e il grado del filtro.
Ciao
MMM non riesco a capire , ma hai usato liste di adiacenza? |
loreste |
Scusa la mia ignoranza, ma cosa sono le liste di adiacenza????
Io conosco solo liste monodirezionali, bidirezionali e con sentinella.
Io ho usato una lista monodirezionale. |
Gusher |
è un modo per rappresentare un grafo sul calcolatore.
Vedi il capitolo sui grafi (Cormen), ci sono un paio di esempi. |
loreste |
Se qualcuno avesse finito ed avesse voglia di confrontare i vari algoritmi, mi faccia sapere....
Io ho utilizzato una lista, se qualcuno che ha preso questa strada e vuole una mano me lo dica.
In bocca al lupo a tutti. |
mitnik |
Per Loreste
Ciao, anche io sto utilizzando delle liste. Ho qualche problema per il calcolo del grado del piano, mi sembra di avere complicato un po le cose. Hai qualche consiglio da darmi? Se vuoi sapere come sto procedendo io ti manderò un messaggio. Ciao Grazie |
loreste |
Per mitnik
Ti ho mandato un PM |
Skanky |
Originally posted by loreste
Se qualcuno avesse finito ed avesse voglia di confrontare i vari algoritmi, mi faccia sapere....
Io ho utilizzato una lista, se qualcuno che ha preso questa strada e vuole una mano me lo dica.
In bocca al lupo a tutti.
Lista di adiacenza credo proprio che sia come lo hai fatto anche tu.
Pero' non riesco a fare una procedura fatat bene per il calcolo dekl dell'aniidamento di un filtro.
Puoi darmi qualche dritta?
mercy |
loreste |
Siccome sto ricevendo diversi PM per il calcolo del grado vi spiego come ho fatto (però non garantisco che sia l'ipotesi migliore, tutto è migliorabile)
Creo una lista d'appoggio dove inserisco tutti i figli del filtro e ricorsivamente elimino tutti i filtri con zero figli, e metto a 1 un contatore, vado avanti ricorsivamente finchè non ho più figli, a quel punto guardo quanto vale il contatore.
Per quanto riguarda il gradopiano, richiamo la funzione grado per tutti i filtri, guardo qual'è il filtro con grado maggiore (es. 4)aggiungo 1 ed avrò 5 che è il mio gradopiano.
Sto pensando,se siete interessati, di essere in università domani (15 aprile) per le 18 con il mio notebook, per darvi maggiori informazioni, però fatemi sapere.
Naturalmente ci sarò solo se almeno uno mi risponde che è interessato
CHE SIA CHIARO NON FARO' COPIARE A NESSUNO, VI DO SOLO DELLE DRITTE. |
|
|
|
|