Homepage  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


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Algoritmi e strutture dati
Pages: [1] 2 3 4 
[PROGETTO] Ingranaggi II
Clicca QUI per vedere il messaggio nel forum
CaboM.BNA
uscito il secondo capitolo della saga...

http://homes.dsi.unimi.it/~aguzzoli...ingranaggi2.pdf

per il momento ho semplicemente letto il testo (mi pare una versione leggermente più complicata del precedente). Finisco di vedere le videolezioni e poi mi ci butto a capofitto...

Intanto apro questo thread per il (profiquo) dibattito... :)

GiKappa
quando si chiede di stampare il macchinario di zeta in questo punto dell'esempio:

p -8 -10 -6 6 eta
e delta
m zeta <-------------
p -8 -10 -6 6 eta

si stampa a video questo:

(
beta 0
epsilon 0
zeta 0
)

invece che questo:

(
alfa 0
beta 0
gamma 1
epsilon 0
zeta 0
)

ho mandato una mail al prof e mi ha detto che si sono sbagliati a scrivere.

Paolo71
Ciao,
ma sono già usciti gli esiti di quello precedente?!?!
Qualcuno almeno lo ha consegnato?? Domani iniziano i primi orali e nemmeno è uscito il risultato... :O

Grazie e ciao
Bye

darkshadow
Solitamente il prof invia una mail per dire se lo hai superato oppure per avvisarti che ci sono stati dei problemi.

prova a controllare la posta della mail con la quale hai inviato il progetto.

Paolo71
Grazie...
E' solo che mi sto un po' inquietando: non ho ricevuto nulla via mail, è già uscito il nuovo progetto ed ancora non so se ho passato quello precedente...
Insomma, non vorrei dover iniziare a fare quello nuovo!! :-)

Grazie e ciao,
Paolo

khelidan
comunque conta che la consegna del vecchio era lunedi sera....


Comunque ci sono anchio per il nuovo,ultima chiamata per la laurea di ottobre! :D

Paolo71
Ciao,
il problema è che se non esce il risultato mi tocca fare anche questo!! :(

darkshadow
Hai controllato se ti è arrivata la mail? guarda anche nella posta indesiderata non si sa mai!

Altrimenti invia una mail al prof chiedendoli com'è andato il progetto.

pirlo21
ragazzi ci sono anche io...da venerdì inizio a guardarlo perchè adesso sono dietro a fisica

Paolo71
Ciao,
si, ho controllato più volte ma non è proprio arrivata alcuna mail.
Ma scusate, sono il solo che ha consegnato il progetto?!? Qualcuno degli iscritti che lo abbia fatto ha poi ricevuto risposta?

Grazie e ciao
Paolo

khelidan
Originally posted by Paolo71
Ciao,
si, ho controllato più volte ma non è proprio arrivata alcuna mail.
Ma scusate, sono il solo che ha consegnato il progetto?!? Qualcuno degli iscritti che lo abbia fatto ha poi ricevuto risposta?

Grazie e ciao
Paolo


ma hai mandato una mail ad Aguzzoli?Poi mi sembra inutile che tu chieda qua perchè probabilmente quelli che leggono qui devono ancora fare il progetto

GiaXVI
ciao ragazzi,

ho un problema con l'inserimento delle piastre e il conteggio delle altezze, in sostanza il conteggio è giusto, ma quando arrivo alla quarta piastra e cerco di settargli l'altezza corrispondente mi sballa i valori e va a prendere altre piastre inserite in precendenza;
è quasi sicuramente un problema di allocazione di memoria, ma nn trovo il modo di risolverlo, qualcuno ci è gia passato???

khelidan
ma innanzitutto come hai strutturato l'inserimento?così è un po difficile aiutarti!;)

Larios
Originally posted by Paolo71
Ciao,
il problema è che se non esce il risultato mi tocca fare anche questo!! :(


a me ha avvisato, prova a sentirlo se non ti ha detto nulla :?

GiaXVI
uso un RBtree; all'atto dell'inserimento della piastra controllo le sovrapposizioni, inserisco quindi la piastra(nome,x1,y1,x2,y2), se è consentito, e dopo inserisco l'altezza.
per le prime 3 piastre inserite funziona, quando invece ne voglio inserire una quarta mi riconosce l'altezza corretta, ma la va a inserire in una piastra che non c'entra nulla, modificando i valori delle altezze di alcune piastre presenti nell'albero!!!
questo problema me lo da sempre sul 4o inserimento...

khelidan
Originally posted by GiaXVI
uso un RBtree; all'atto dell'inserimento della piastra controllo le sovrapposizioni, inserisco quindi la piastra(nome,x1,y1,x2,y2), se è consentito, e dopo inserisco l'altezza.
per le prime 3 piastre inserite funziona, quando invece ne voglio inserire una quarta mi riconosce l'altezza corretta, ma la va a inserire in una piastra che non c'entra nulla, modificando i valori delle altezze di alcune piastre presenti nell'albero!!!
questo problema me lo da sempre sul 4o inserimento...


Io avevo problemi del genere sul vecchio progetto,sei sicuro che l'inserimento è giusto?o meglio ad esempio io mi ero accorto che se inserivo la piastra e poi la visita continuava(usavo una visita inorder) mi sballava tutto,prova a fare questo tipo di debug,seguire passo passo i vari inserimenti

GiaXVI
era un problema di return in rbinsert!!!

Larios
oggi ho discusso con fiorentini il progetto, che nel complesso va "abbastanza bene":

il codice è qui, magari c'è qualcosa che vi puo serive.....
http://myfreefilehosting.com/f/275c2601b6_0.04MB

tenete conto che il fatto di avere scomposto le piastre in punti, era piu o meno una vaccata, così mi ha detto :?

Un'altra cosa che non gli è piaciuta è il fatto ripetessi due volte la visita in ampiezza ogni volta (usavo la seconda per risettare i nodi come nuovi O(m)+O(m)=O(m), al posto di scorrere e risettare tutte le piastre/nodi come nuove e poi fare la visita O(n+m))

Il resto ok.

Se serve vi posto anche la relazione comunque ho usato: un albero rosso nero per i punti(prima chiave x seconda y e nome), uno per le piastre ordinate per nome, un grafo per le adiacenze.

khelidan
grande volevo proprio vedere cosa non tornava a me! ;)

Non ho capito ma la vaccata era riferita all'albero dei punti?

Larios
Originally posted by khelidan
grande volevo proprio vedere cosa non tornava a me! ;)

Non ho capito ma la vaccata era riferita all'albero dei punti?


si, a me sembrava una cosa geniale :(

zzz
Che domande ti ha fatto torelli all'orale?

Larios
devo fare l'esame con goldwurm :)

khelidan
sentite ma voi per ogni nodo dell'albero,rappresentate una piastra avete una lista per le piastre adiacenti e una per quelle sovrapposte?

khelidan
Originally posted by Larios
si, a me sembrava una cosa geniale :(


Non ho mica capito sai perchè hai fatto una cosa così,non bastava eventualmente fare un altro albero rb ordinato per coordinate?

GiaXVI
si io uso una lista x le adiacenze e una per le sovrapposizioni, nn mi sembra comodo salvare tutto in un unica lista

khelidan
Originally posted by GiaXVI
si io uso una lista x le adiacenze e una per le sovrapposizioni, nn mi sembra comodo salvare tutto in un unica lista


si infatti,mi chiedevo se usavate un approccio diverso per le sovrapposizioni più che usare una sola lista,comunque pure io sto facendo così

jamez-hetfield
Ciao ragazzi..
..sono anch'io dietro a IngranaggiII..
Avrei una domanda: ma i vari output alle funzioni vanno stampati sequenzialmente dopo la richiesta di input o tutti insieme alla fine?!

..tipo..

Cosi:
INPUT: m piastra_1
OUTPUT: (
piastra_2 5
...
(
INPUT: s piastra_1
OUTPUT: s 4 lavora in senso antiorario
...

..oppure..

INPUT: m piastra_1
INPUT: s piastra_1
INPUT: f

OUTPUT: (
piastra_2 5
...
(
OUTPUT: piastra_1 4 lavora in senso antiorario
??
..grazie x l'help..

Sacratix
subito dopo la richiesta

nel pdf del progetto li trovi scritti nel secondo modo, perchè [immagino] così tu li puoi scrivere in un txt e farli leggere da lì, lo stesso per l'output; in questo modo è più facile da controllare se il risultato è coretto

jamez-hetfield
Avevo immaginato anch'io..
..mi hai tolto un dubbio..grazie mille!

mozilla
Originally posted by Larios
si, a me sembrava una cosa geniale :(


Anche a me sembra una cosa geniale, anche perché senza questo metodo per trovare le piastre adiacenti e quelle sovrapposte non vedo altro modo che scorrersi TUTTE le piastre (l'ordinamento per coordinate mi sembra proprio non funzioni per questo tipo di ricerca).
Quindi, fermo restando che un'indicizzazione con chiave unica e univoca di rettangoli su un piano bidimensionale sia fuori dalla nostra portata (perlomeno dalla mia, perché mi sembra un argomento di ricerca scientifica vista la difficoltà), la soluzione di utilizzare un mapping delle piastre sui punti del piano come volevi fare tu mi sembra proprio una soluzione egregia. Solo che il tuo insuccesso mi scoraggia alquanto.....

jamez-hetfield
..altra domandina..
Ho fatto l'interfaccia di input..
..per quanto riguarda il comando "e" è seguito o da un numero (l'altezza) o un nome..
..io sono arrivato fino ad estrarre questo in una stringa e riconoscere se quella stringa contiene un numero o un nome..
Ora, visto che il cast ovviamente nn funge, che voi sappiate esiste una funzioncina tipo il metodo String.toInt di java?
..o avreste consigli su come ottenere un intero da quella benedetta stringa? :-D
..grazie x l'aiuto!

Sacratix
credo che tu ti debba fare la conversione a mano...

jamez-hetfield
Mmm..a mano?! :?

Sacratix
sì...

devi prendere ogni carattere, trasformarlo in intero, e moltiplicare per una potenza di 10, l'esponende dipende dalla posizione del carattere nella stringa

"1756" = 1*10^3 + 7*10^2 + 5*10^1 + 6*10^0

khelidan
http://www.cplusplus.com/reference/...tdlib/atoi.html

khelidan
Originally posted by mozilla
Anche a me sembra una cosa geniale, anche perché senza questo metodo per trovare le piastre adiacenti e quelle sovrapposte non vedo altro modo che scorrersi TUTTE le piastre (l'ordinamento per coordinate mi sembra proprio non funzioni per questo tipo di ricerca).
Quindi, fermo restando che un'indicizzazione con chiave unica e univoca di rettangoli su un piano bidimensionale sia fuori dalla nostra portata (perlomeno dalla mia, perché mi sembra un argomento di ricerca scientifica vista la difficoltà), la soluzione di utilizzare un mapping delle piastre sui punti del piano come volevi fare tu mi sembra proprio una soluzione egregia. Solo che il tuo insuccesso mi scoraggia alquanto.....


secondo me viene vista come una complicanza,almeno io la vedo cosi,ti fai una vista in profondità,inorder e vivi felice...almeno io avevo fatto cosi,poi non so se fosse la scelta migliore perchè avevo lasciato il progetto,ora vediamo,io proseguo con questa strada,inoltre usata anche in vecchi progetti che avevano preso un bel voto,cmq io non ho ben capito il metodo di larios,puoi spiegarmelo in due parole?

Sacratix
pensavo fosse un'esclusiva del c++

khelidan
Originally posted by Sacratix
pensavo fosse un'esclusiva del c++


no no è del C,stdlib.h

mozilla
Originally posted by khelidan
secondo me viene vista come una complicanza,almeno io la vedo cosi,ti fai una vista in profondità,inorder e vivi felice...almeno io avevo fatto cosi,poi non so se fosse la scelta migliore perchè avevo lasciato il progetto,ora vediamo,io proseguo con questa strada,inoltre usata anche in vecchi progetto che avevano preso un bel voto,cmq io non ho ben capito il metodo di larios,puoi spiegarmelo in due parole?


La visita inorder funziona ed è la cosa più semplice ma ha tempo di esecuzione O(n) (correggetemi se sbaglio), ovvero come scorrersi tutta una lista. Mentre la soluzione di Larios consente di 1)scomporre una piastra nei suoi punti, 2)memorizzarli in una struttura dati (per esempio un rbt con l'ordinamento sulle coordinate), e 3) ogni punto può contenere un riferimento ad ogni piastra a cui appartiene (che per il gioco delle adiacenze e/o sovrapposizioni possono essere più di uno).
Così quando inserisci una piastra per esempio di dimensioni 4*5, coprirà un numeri di punti pari a 5*6, ovvero 30. Con trenta accessi alla tua struttura dati (ognuno dei quali ti costa O(log(numero punti)) se usi un rbt) hai capito quali sono le piastre adiacenti e sovrapposte a quella che devi inserire.
Ovvio che per pochi inserimenti potrebbe non convenire, ma pensando di avere tante piastre, si spera che il numero di punti della piastra che stai per inserire sia inferiore al numero totale di piastre presenti nel piano. In questo modo ottimizzi di brutto..... almeno penso... :sad:

jamez-hetfield
Originally posted by khelidan
http://www.cplusplus.com/reference/...tdlib/atoi.html


GRANDE KHELIDAN!!
..funzia da dio!

khelidan
Originally posted by mozilla
La visita inorder funziona ed è la cosa più semplice ma ha tempo di esecuzione O(n) (correggetemi se sbaglio), ovvero come scorrersi tutta una lista. Mentre la soluzione di Larios consente di 1)scomporre una piastra nei suoi punti, 2)memorizzarli in una struttura dati (per esempio un rbt con l'ordinamento sulle coordinate), e 3) ogni punto può contenere un riferimento ad ogni piastra a cui appartiene (che per il gioco delle adiacenze e/o sovrapposizioni possono essere più di uno).
Così quando inserisci una piastra per esempio di dimensioni 4*5, coprirà un numeri di punti pari a 5*6, ovvero 30. Con trenta accessi alla tua struttura dati (ognuno dei quali ti costa O(log(numero punti)) se usi un rbt) hai capito quali sono le piastre adiacenti e sovrapposte a quella che devi inserire.
Ovvio che per pochi inserimenti potrebbe non convenire, ma pensando di avere tante piastre, si spera che il numero di punti della piastra che stai per inserire sia inferiore al numero totale di piastre presenti nel piano. In questo modo ottimizzi di brutto..... almeno penso... :sad:


ah ho capito,in effetti sembra esser corretto come ragionamento,a questo punto bisognerebbe sentire larios e farsi dire le motivazioni per cui il prof l'ha definita una "vaccata"

Inorder si scorre tutto l'albero,nel caso precedente comunque io l'ha interrompevo nel caso di una sovrapposizione,in questo caso va fatta comunque sempre

Larios
a me il prof ha detto, se ci sono parecchie piastre di sono anche moltissimi punti :?. Poi gli ho fatto notare che per trovare le adiacenze e sovrapposizioni mi bastava cercare i soli punti che componevano il bordo della piastra inserita nell'albero, mentre come diceva lui avrei dovuto fare un confronto con tutte le piastre, cosa che secondo lui era megliore...ma niente...

Io prima di farlo ho considerato che il tempo sara sempre O(n) con n pari al numero delle piastre col suo metodo, con il metodo che ho usato invece. tempo O(log n) con n pari al numero dei punti

per darvi un idea se avessi 5.000.000 di piastre con 15 punti ciascuna ci metterei solamente 26 passaggi nell'albero per trovare 1 punto e dovrei ripetere la ricerca per 12 volte(punti che stanno sul bordo), mentre dovrei scorrermi tutte le 5M di piastre nell'altro caso.

Io non sono stato li piu di tanto a difendere sta cosa, visto che comunque sul progetto non da voto ma è solo passato o no.

Provate a parlarne col vostro prof per essere sicuri, c'è anche la remota possibilità che non abbia capito, possono sbagliare anche loro :D

mozilla
Originally posted by Larios
a me il prof ha detto.....
Provate a parlarne col vostro prof per essere sicuri, c'è anche la remota possibilità che non abbia capito, possono sbagliare anche loro :D


Continuo a pensare che sia una grande ottimizzazione. Io farei cmq un controllo su tutti i punti della piastra in quanto potrebbe esserci una piastra completamente inclusa nell'altra (o forse no? :?), ma a parte questo dettaglio la trovo una grande soluzione.

darkshadow
Originally posted by Larios


Io non sono stato li piu di tanto a difendere sta cosa, visto che comunque sul progetto non da voto ma è solo passato o no.


Con chi lo hai fatto? che io sappia con fiorentini c'è il voto, si possono prendere fino ad un massimo di 5 punti.

Deky
mi spiegate come puo' una piastra, bloccare un macchinario, se non puo' essere inserita adiacente o sovrapposta ad un altra in movimento?

jamez-hetfield
Una piastra può bloccare un macchinario una volta che questo è attivato..
..se te inserisci una piastra dove non può a macchinario fermo quando lo attiverai verrà bloccato..
..bisogna in qualche modo simulare un avvio del macchinario (o almeno io c'ho ragionato cosi!)

khelidan
si si è cosi...inoltre a voi risulta che una piastra blocca un macchinario solo quando viene inserita adiacente ad entrambe altre due piastre adiacenti tra loro?

jamez-hetfield
Appena rientro dal lavoro faccio due prove e ti dico..
..cosi su due piedi sembrerebbe di si..

jamez-hetfield
Problema:

..mettiamo il caso di avere:

p 2 1 5 3 p01
p 1 2 3 5 p02
p 4 2 6 5 p03

p02 e p03 sono sovrapposte a p01 e disgiunte tra loro..

..se ora inseriamo: p 2 4 4 6 p04 il macchinario si blocca?

Oppure va bene xk p04 sarà ad altezza 2 mentre p03 ad altezza 1?!
(..e quindi in caso aziono p01 in senso antiorario ho che tutte vanno nello stesso senso..)

khelidan
scusa ma qui le piastre formano tutte un solo gruppo,che problema c'è?girano tutte nello stesso senso,secondo me

Mi e venuto un dubbio,metti che abbiamo una piastra di altezza 1 parte di un gruppo,una piastra sarà adiacente sempre e comunque a prescindere dall'altezza dell'altra,perchè quest'ultima avrà zero?

jamez-hetfield
Originally posted by khelidan
scusa ma qui le piastre formano tutte un solo gruppo,che problema c'è?girano tutte nello stesso senso,secondo me

Mi e venuto un dubbio,metti che abbiamo una piastra di altezza 1 parte di un gruppo,una piastra sarà adiacente sempre e comunque a prescindere dall'altezza dell'altra,perchè quest'ultima avrà zero?


No..la nuova p04 sarebbe adiacente a p03 e sovrapposta a p02..
..in questo modo non tenendo conto delle altezze:
..se ad esempio p01 viene attivata 'a' avremo:

p02 - 'a'
p03 - 'a'

p04 - 'a' tramite p02 e 'o' tramite p03 (che è adiacente)

..ora, avviene il blocco o siccome p03 è più alta p04 viene mossa solo da p03?

khelidan
si ok ma p04 è sov a p02 che è sov a p01,mentre p03 e sov a p01,tra quelle 4 piastre c'è un cammino di sovrapposizione,secondo me il fatto che poi ci sia un adiacenza non conta niente,quelle 4 formano un gruppo e si muovono tutte a

jamez-hetfield
Ok..
..come pensavo pure io..

Il mio prossimo dubbio è quello che hai anche te..

metti che abbiamo una piastra di altezza 1 parte di un gruppo,una piastra sarà adiacente sempre e comunque a prescindere dall'altezza dell'altra,perchè quest'ultima avrà zero?

..vediamo se qualcuno ci illumina..
Sennò mail al prof!

khelidan
ci illuminano le slide del progetto,nell'esempio due dice che p4 ha altezza due e dice anche che è adiacente a p6,che ha ovviamente altezza 0! ;)

cmq in effetti il tuo esempio non è banale,credo al 99% dovrebbe esser come la pensiamo noi,cmq lo giro al prof e vediamo che dice

jamez-hetfield
..attendo notizie allora..

Deky
credevo anche io fosse così.....ma mi sa che il discorso è molto + complicato.....

prendete l'esempio del prof....l'esempio 2, il primo macchinario...

adesso....immaginate che la piastra p11 non sia una piastra intera....ma sia divisa in 2 piastre adiacenti..... (per intenderci, una linea orizzontale che taglia in 2 la piastra, proprio all'altezza del nome p11)....

beh...a quel punto...se dovessimo inserire la piastra p11a, questa sarebbe adiacente a p7, e a p11b.....ma p7 e p11b non sono adiacenti tra di loro....eppure il macchinario viene bloccato....

come caspita si fa questo controllo mo..........:evil:

khelidan
perchè si blocca?forse mi sfugge qualcosa ma,il gruppoone di sinistra attiviamolo o,p7 sarà a,p11 alta sarà o,p11 bassa sarà a,p12 sarà a e il gruppettino di p13 o

sbaglio qualcosa?

Deky
p 6 quindi dovra' essere o, il gruppo di p8 dovra' essere a, e p 11 bassa dovra' essere o, ma non puo' essere o perke' la sua adiacente pure e' o.....

khelidan
vero avevo visto male io la figura consideravo p6 sovrapposta,infatti credo di fare come ha fatto larios nel suo progetto,io inserisco,ammettiamo che p11 alta sia gia dentro e tutto è coerente,inserisco p11 bassa,aggiorno le sue adiacenze,mi costruisco il macchiario e lo attivo,quando vado ad attivare p11 bassa scorro le sue adiacenze e vedo che p11 alta ha uno stato uguale a quello che p11 bassa dovrebbe avere,quindi vuol dire che p11 bassa blocca il macchinario,elimino p11 bassa dal piano

p.s:cmq domani siete in silab o celoria?fatemi sapere cosi mi aggrego anchio

khelidan
Originally posted by jamez-hetfield
..attendo notizie allora..


mi ha risposto il prof,è come la pensiamo noi,quelle 4 formano un gruppo e girano tutte nella stessa direzione nonostante l'adiacenza

jamez-hetfield
ok..quindi in caso bisogna prediligere il movimento di una sovrapposta (a quindi con altezza >0) piuttosto che di una adiacente..

jamez-hetfield
Domanda..
..se con una variabile char *elenco..
..e voglio appendergli ricorsivamente i nomi delle piastre..
..come imposto i return?!..le ho provate tutte!!

GiKappa
forse ho capito male un dubbio che avevate nella pagina precedente.

se due piastre sono a due altezze diverse, ma sono "adiacenti" (o meglio, lo sarebbero se fossero alla stessa altezza), non sono da considerare adiacenti oppure si? io pensavo di no!

e per la funzione elimina come pensate? perchè nel case 'e' ci sono due casi: quando inserisci il nome della piastra e quando inserisci l'altezza.

che macello questo progetto!

khelidan
Originally posted by GiKappa
forse ho capito male un dubbio che avevate nella pagina precedente.

se due piastre sono a due altezze diverse, ma sono "adiacenti" (o meglio, lo sarebbero se fossero alla stessa altezza), non sono da considerare adiacenti oppure si? io pensavo di no!



no no sono adiacenti,guarda l'esempio due,p6 e p4

per la elimina,con il nome è presto fatto sei hai usato un albero lessicografico,per l'altezza,be io non vedo altra soluzione che non sondare tutto l'albero

GiKappa
nell'esempio è così, però va contro la realtà! se due piastre sono su livelli diversi non sono adiacenti!

io ho già mandato 3 mail al professore! qualcuno può esporgli questo quesito? se gliene mando ancora una mi manda affanculo! :asd:

khelidan
Originally posted by jamez-hetfield
Domanda..
..se con una variabile char *elenco..
..e voglio appendergli ricorsivamente i nomi delle piastre..
..come imposto i return?!..le ho provate tutte!!


no per carità,che brutta roba...usa una lista!! :p

jamez-hetfield
mmm..dici di usare una lista contentente i nomi?

khelidan
Originally posted by GiKappa
nell'esempio è così, però va contro la realtà! se due piastre sono su livelli diversi non sono adiacenti!

io ho già mandato 3 mail al professore! qualcuno può esporgli questo quesito? se gliene mando ancora una mi manda affanculo! :asd:


non credo vada contro la realtà,in fondo è un piano a due dimensioni,e vero che c'è questa cosa dell'altezza ma credo sarebbe una complicazione di troppo,se qualcuno vuole chiedere anchio sono gia a due mail oggi! :asd:

khelidan
Originally posted by jamez-hetfield
mmm..dici di usare una lista contentente i nomi?


vuoi contenere i nomi delle adiacenze(sovrapposizioni) alla tua piastra?Io avevo capito così

jamez-hetfield
no no..
..hehe, quello l'ho gia fatto..
E' per la funzione 'm p'..dove scorro il grafo e recupero i nomi delle piastre che fanno parte del macchinario di 'p'..
..siccome vorrei farlo ricorsivamente volevo restituire direttamente la stringa con l'elenco da stampare..
..però nn riesco durante la ricorsione a fare l'append dei vari nomi..

khelidan
Originally posted by jamez-hetfield
no no..
..hehe, quello l'ho gia fatto..
E' per la funzione 'm p'..dove scorro il grafo e recupero i nomi delle piastre che fanno parte del macchinario di 'p'..
..siccome vorrei farlo ricorsivamente volevo restituire direttamente la stringa con l'elenco da stampare..
..però nn riesco durante la ricorsione a fare l'append dei vari nomi..


umh ma non puoi fare in modo di stamparli man mano?

P.s:il macchinario te lo crei con una visita in ampiezza?

Sacratix
Originally posted by khelidan
si si è cosi...inoltre a voi risulta che una piastra blocca un macchinario solo quando viene inserita adiacente ad entrambe altre due piastre adiacenti tra loro?


magari, invece no :(

ad esempio prendi 5 piastre a ... pentagono ... (!)
ognuna con due piastre adiacenti

quando inserisci la quinta, si blocca tutto

khelidan
Originally posted by Sacratix
magari, invece no :(

ad esempio prendi 5 piastre a ... pentagono ... (!)
ognuna con due piastre adiacenti

quando inserisci la quinta, si blocca tutto


si si infatti,meglio seguire un altro approccio,che ho descritto sopra,dovrebbe andar bene in ogni caso

Sacratix
Originally posted by jamez-hetfield
volevo restituire direttamente la stringa con l'elenco da stampare



per quanto io sia convinto che le funzioni non debbano fare output a video, nel caso di una funzione stampa, si può anche sorvolare...

anche perchè se le piastre sono tante, ti viene fuori una stringona pazzesca

Sacratix
Originally posted by khelidan
si si infatti,meglio seguire un altro approccio,che ho descritto sopra,dovrebbe andar bene in ogni caso


...non riesco a stare dietro a tutte le risposte...

GiKappa
ma il macchinario non si blocca se ci sono dei cicli? o sbaglio?

jamez-hetfield
I cicli possono esserci..
..dipende da come sono posizionate le piastre..

khelidan
Originally posted by jamez-hetfield
I cicli possono esserci..
..dipende da come sono posizionate le piastre..


te come hai fatto la storia dell'attivazione,hai fatto una visita in ampiezza e attivi tutto di conseguenza?

jamez-hetfield
..devo ancora farlo..
..penso basti visitare il grafo e attivare sequenzialmente..poi quando incontro nodi già visitati valuto se girano dalla parte giusta o se c'è il blocco..
..cosi risolvo 2 problemi in uno..

khelidan
Originally posted by jamez-hetfield
..devo ancora farlo..
..penso basti visitare il grafo e attivare sequenzialmente..poi quando incontro nodi già visitati valuto se girano dalla parte giusta o se c'è il blocco..
..cosi risolvo 2 problemi in uno..


infatti e quello che penso di fare pure io

jamez-hetfield
Sinceramente non sto tanto a pensare a ottimizzazioni varie..
Quello che mi interessa è passare l'esame!

jamez-hetfield
..domanda..

Se devo stampare il macchinario della piasta "p_01"..nell'elenco dev'esserci anche lei?
..xk sul testo del progettino c'è scritto di no ma nell'esempio sembra di si..

Sacratix
a me sembra proprio il contrario...

il testo dice, stampare tutte le piastre del macchinario a cui appartiene p_01

e poi nell'esempio subito dopo non appare p_01

Sacratix
rettifico, gli esempi di output stampano anche la piastra p_01

sarà stata una svista...

GiKappa
come pensate di implementare l'eliminazione di un nodo e di tutte le sue occorrenze nelle liste di adiacenza degli altri nodi?

jamez-hetfield
Raga ho un problema..
..prima di creare il grafo cancello tutte le liste d'adiacenza in modo da eliminare riferimenti a nodi che sono stati eliminati..
..il problema è che probabilmente il pc è troppo veloce :D ..mi spiego..
Se faccio:
...
cancella_adiacenze();
printf("Cancellate..");
crea_grafo();
...


..è tutto ok..

Se invece faccio:

...
cancella_adiacenze();
crea_grafo();
...


il programma va in crash!!
..ma c***o..
Probabilmente l'operazione di free() è un pò più lenta dell'esecuzione del programma..boh..:?
..avete idee?!

Sacratix
bello! XD

indipendentemente dalla velocità della free, cmq. non passa all'istruzione dopo finchè non l'ha finita

quindi... prova con l'esorcista....

o riavvia il pc, sai, a volte è la soluzione ai mali del mondo... XD

jamez-hetfield
Hehe..
..mentre facevo la doccia (ebbene si, una volta ogni tanto la faccio pure io :D) m'è venuta in mente un'ottimizzazione che dovrebbe risolvermi anche quel problema (che ho momentaneamente risolto aggiungendo un printf("");)..
..vabbè che avevo detto di nn puntare ad ottimizzazioni..però un minimo di decenza :)
..ora mi ci metto..

jamez-hetfield
Ah ragazzi/e..

PROPOSTA:

..io proporrei di postare qualche test di sistema..
Tanto prima o poi tutti dobbiamo farne giusto?..man mano li postiamo pure..
..cosi sicuramente riusciamo a controllare più aspetti/casi di quanto potremmo fare da soli..

Sacratix
... ci avevo già pensato io ...

mannaggia a j-dito-veloce

jamez-hetfield
HA HA HAA (risata diabolica)

Sacratix
primo: quella non è una risata diabolica!

secondo:

premettendo che odio la matematica in genere...
stavo sinceramente valutando l'ipotesi di implementare
l'albero dei punti, per trovare adiacenze e sovrapposizioni

allora ho fatto così:

piastre = n
punti della piastra = k
punti totali = T
[@ = teta]

allora
se prendiamo k come la media dei punti per piastra
T = k*n



- passare il grafo - @(n)
- trovare i punti - @( k*O(log(k*n)) ) siamo pessimisti, niente O grande

quando vale la pena l'albero?

.: k > n vince @(n)
.: k = n vince @(n)
.: k < n vince ?

? così, dopo qualche prova (potenze di due così facevo prima)
sembra che il log, per avere qualche possibilità di vittoria

k debba essere sicuramente minore di sqrt(n)

risultato:
@(n) vince +75% dei casi (anche se teoricamente sono infiniti)


sbaglio?

muahahahah! <--- risata diabolica, la vera

jamez-hetfield
Originally posted by Sacratix
primo: quella non è una risata diabolica!

secondo:

premettendo che odio la matematica in genere...
stavo sinceramente valutando l'ipotesi di implementare
l'albero dei punti, per trovare adiacenze e sovrapposizioni

allora ho fatto così:

piastre = n
punti della piastra = k
punti totali = T
[@ = teta]

allora
se prendiamo k come la media dei punti per piastra
T = k*n



- passare il grafo - @(n)
- trovare i punti - @( k*O(log(k*n)) ) siamo pessimisti, niente O grande

quando vale la pena l'albero?

.: k > n vince @(n)
.: k = n vince @(n)
.: k < n vince ?

? così, dopo qualche prova (potenze di due così facevo prima)
sembra che il log, per avere qualche possibilità di vittoria

k debba essere sicuramente minore di sqrt(n)

risultato:
@(n) vince +75% dei casi (anche se teoricamente sono infiniti)


sbaglio?

muahahahah! <--- risata diabolica, la vera


Mmm..PASSO!

jamez-hetfield
..Ragazzi e Ragazze..
..Signori e Signore..


..THIS IS THE END, MY ONLY FRIEND, THE END..

..mi servono gli ultimi dettagli dal prof. (riguardo a casi di blocco strani) o poi ci si butta in:

..Documentazione (che sarà un casino soprattutto x il calcolo dei costi)
..Reti (ho l'orale settimana prossima)
..Tirocinio (maledetto progetto di tirocinio!! :) )

jamez-hetfield
P.S. Sempre che non saltino fuori casini nella fase di test!! :evil:

khelidan
Per fare la delete dei nodi dall'albero rb avete fatto modifiche particolari rispetto all'implementazione presente su algoteam?

Sacratix
no, tranne per la copia dei campi
sempre ammesso che funzioni...

------------------------------------------------------

oggi per la prima volta ho compilato....
bello gasato per aver sistemato quella ventina di errori *.*
ho voluto prima provare con le opzioni varie opzioni.....

- Wall ok
- pedantic C++ style comment ecc... ecc...

problemino, i commenti di c++ non sono quelli così? /* commento */
perchè io non ne ho messi, e neanche a cercarli in automatico li trovo...

- ansi errori ogni 2 righe....... T.T anche per quelle vuote

ma è normale?

jamez-hetfield
..riusciresti a scrivere la sintassi dei controlli che hai fatto?
Perchè io di quei controlli ho fatto solo -wall .. e m'ha dato più che errori un paio di suggerimenti (tipo inizializzare i puntatori ad una lista in fase di dichiarazione..bah)..
Ma è necessario che sia proprio libero da quel tipo di errori?!

Sacratix
non lo so, però il compilatore è fissato...

quell'errore che dici tu è successo anche a me

metti che tu lo vuoi inizializzare così

if(...)
p =
else
p=

e poi usi p
in questo caso rompe

cmq

gcc -Wall
gcc -pedantic
gcc -ansi

jamez-hetfield
ok..grazie x l'info..
..come previsto iniziano i primi bug..
Oggi debug a mano!

Powered by: vbHome (lite) v4.1 and 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