 | |
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 |
[PROGETTO] Ingranaggi II Clicca QUI per vedere il messaggio nel forum |
khelidan |
allora io con pedantic ho:
warning: ISO C90 forbids mixed declarations and code
ma nel 2008 non ci penso minimamente di sottostare a quel warning
per il resto con wall e ansi non mi da nessuno warning ne errore |
khelidan |
ma è possibile eliminare una piastra che fa parte di un macchinario in movimento? |
jamez-hetfield |
Originally posted by khelidan
ma è possibile eliminare una piastra che fa parte di un macchinario in movimento?
Si, l'ho chiesto al prof..
Raga, secondo voi se in seguito ad una istruzione "m p_01" mi ritrovo davanti a questo output:
(
p_01 0
p_02 1
...
...
...
(null) 0
)
..quel "(null) 0" a cosa potrebbe esser dovuto?!
Ovviamente di piastre che si chiamano (null) non ne ho inserite..
..pensavo al processo di eliminazione sbagliato ma se volessi accedere al campo "nome" di una struttura che non esiste mi darebbe errore, mica (null).. |
khelidan |
e se il dopo l'eliminazione il movimento non è più coerente bisogna risistemare tutto?
cosa usi per mantenere il macchinario?Liste?che tipo?
Cosa intendi che ti darebbe errore?Non in compilazione di certo,potrebbe crasharti il programma |
jamez-hetfield |
..dopo l'eliminazione tutto gira come prima..non varia nulla..
Ovviamente se il macchinario si divide in due devi gestirli separatamente dopo l'eliminazione..
Dunque uso una lista per le piastre e per ogni piastra una lista di adiacenze.. |
jamez-hetfield |
Originally posted by khelidan Cosa intendi che ti darebbe errore?Non in compilazione di certo,potrebbe crasharti il programma
..esatto, intendevo crash.. |
khelidan |
Originally posted by jamez-hetfield
..dopo l'eliminazione tutto gira come prima..non varia nulla..
Ovviamente se il macchinario si divide in due devi gestirli separatamente dopo l'eliminazione..
Dunque uso una lista per le piastre e per ogni piastra una lista di adiacenze..
si ci ho ho pensato dopo
bho è strano perchè l'altezza c'è,prova a stampare gli altri dati della piastra |
khelidan |
ma il macchinario bisogna per forza stamparlo ordinato per nome? |
Sacratix |
noooo, c'è scritto che non importa l'ordine |
Sacratix |
piuttosto
mi succede una cosa stranissima...
inserisco tre piastre (a piramide)
alfa e beta, separate
gamma sovrapposte alle due di prima
se elimino gamma tutto bene,
elimino beta,
stampa gamma
mi dice che è da sola
stampa alfa
mi dice che c'è anche gamma
ristampo gamma
adesso mi dice che c'è anche alfa
-------------------------------------------------
eppure la stampa non mi modifica niente delle adiacenze
il mio codice è vivo! |
khelidan |
Originally posted by Sacratix
noooo, c'è scritto che non importa l'ordine
ah ok,per fortuna.....
-----
se mi dai le coordinate del tuo esempio provo con il mio progetto
piuttosto te come ha fatto nell'elimina a capire se il secondo parametro è una stringa,il nome della piastra oppure un intero,l'altezza della piastra? |
jamez-hetfield |
Raga sono in crisi..
..alla riga 19 dell'input di esempio "m zeta" come output ricevo:
(
zeta 0
epsilon 0
beta 0
(null) 0
)
..e al comando successivo va tutto in crash..
Non riesco a capire che cazzo succede..
Sono due giorni che rileggo da capo il codice, pensavo fosse un problema di aggiornamento delle adiacenze in seguito all'eliminazione di delta (riga 18 di input) ma sembra esser tutto perfetto..
Questo (null) non è nemmeno una pseudopiastra perchè se stampo gli altri suoi campi mi da tutto a zero (anche inizializzando le variabili nell'inserimento piastra a valori diversi)..da dove cazzo uscirà?!
Il problema è che non riesco nemmeno a riprodurlo! |
jamez-hetfield |
Originally posted by khelidan
piuttosto te come ha fatto nell'elimina a capire se il secondo parametro è una stringa,il nome della piastra oppure un intero,l'altezza della piastra?
..io ho semplicemente ricavato con un if se il primo elemento della strina è un numero (nelle specifiche il primo carattere di una piastra è per forza una lettera) e nel caso faccio il parsing da string a int con la funzione int atoi(string)..
..non sarà prestazionalmente ottimo ma x lo meno funziona.. |
khelidan |
Originally posted by jamez-hetfield
..io ho semplicemente ricavato con un if se il primo elemento della strina è un numero (nelle specifiche il primo carattere di una piastra è per forza una lettera) e nel caso faccio il parsing da string a int con la funzione int atoi(string)..
..non sarà prestazionalmente ottimo ma x lo meno funziona..
ma come fai a capire se il primo valore è un numero o un char?
P.s: per il tuo problema,sei proprio sicuro che quel null non sia qualcosa che ha a che fare con delta e con la sua eliminazione?Hai provato a fare altri esempi di input simili? |
Sacratix |
nome[0] >= '0' && nome[0]<= '9'
--------------------------------------
l'esempio è
p 0 0 10 10 alfa
p 20 0 30 10 beta
p 5 0 25 10 gamma
e beta //o alfa tanto il risultato è lo stesso
m gamma
m alfa
m gamma
------------------------------------
nuovo problema,
quando elimino le liste
invece di mi trovo il campo nome = "" e l'eliminazione continua finchè non si pianta... |
Sacratix |
Originally posted by jamez-hetfield
..non sarà prestazionalmente ottimo ma x lo meno funziona..
...è l'unico modo |
jamez-hetfield |
Originally posted by khelidan
ma come fai a capire se il primo valore è un numero o un char?
P.s: per il tuo problema,sei proprio sicuro che quel null non sia qualcosa che ha a che fare con delta e con la sua eliminazione?Hai provato a fare altri esempi di input simili?
Allora, se te hai per esempio..
char *nome;
nome = //recuperi la stringa che segue il comando "e"
if((nome[0] == '0')||(nome[0] == '1')||(nome[0] == '2')|| ecc..)
int num = atoi(nome);
..è tutto il giorno che provo, non riesco ad isolare il caso.. |
jamez-hetfield |
Originally posted by Sacratix
...è l'unico modo
Meglio! :D |
khelidan |
a me l'esempio di Sacratiz mi ha fatto trovare un problema nell'elimina tra l'altro |
jamez-hetfield |
..a me quell'esempio nn da problemi.. |
jamez-hetfield |
..controlla gli aggiornamenti delle adiacenze e che i comandi di free(...) siano messi nei posti giusti.. |
Sacratix |
io penso c'entri qlcs. con la demarcatura dei nodi... |
khelidan |
tra l'altro ho trovato un altro problema se inserisco:
p 0 0 10 10 a
p 0 0 10 -10
me le trova sovrapposte e non adiacenti,mentre se le sposto su di una coordinata va tutto ok,ho quel problema solo quando sono sono adiacenti sull'asse delle x |
jamez-hetfield |
..è impossibile un caso del genere..
..le coordinate possibili sono (x1,y1) BASSO A SX, (x2,y2) ALTO A DX..inserite come p x1 y1 x2 y2 nome
..quelle che hai inserito te sono: p 0 0 10 -10:
(0,0)..ALTO A SX..
(10,-10)..BASSO A DX..
..m'avevi già fatto andare a modificare il codice mannaggia a te!! :P |
khelidan |
Originally posted by jamez-hetfield
..è impossibile un caso del genere..
..le coordinate possibili sono (x1,y1) BASSO A SX, (x2,y2) ALTO A DX..inserite come p x1 y1 x2 y2 nome
..quelle che hai inserito te sono: p 0 0 10 -10:
(0,0)..ALTO A SX..
(10,-10)..BASSO A DX..
..m'avevi già fatto andare a modificare il codice mannaggia a te!! :P
:asd::asd: stavo impazzendo,solo al piensiero di dover riguardare la funzione che determina la sovrapposizione mi veniva il male!! :D |
jamez-hetfield |
..qualcuno è riuscito a schiarirsi le idee riguardo ai casi in cui una piastra blocca il macchinario?
Per ora io sono arrivato a:
..una piastra adiacente a due piastre che girerebbero in senso opposto..
..nel caso in cui ci siano sovrapposizioni la piastra con "h" + alta detta legge e nn si blocca nulla..
(cioè inserisco una piastra sovrapposta ad una di altezza 3 e ad un'altra di altezza 2 (o adiacente)->anche se in teoria si avrebbe il blocco in pratica no perche la nuova piastra avrà altezza 4 e quindi se ne frega di piastre ad altezze minori di 3)..però nn so se penso giusto..ho scritto al prof ma dopo avermi cazziato xk nn aveva capito (ho letto e riletto la mail fino a convincermi che tutto era chiaro!) è stato abb vago.. |
khelidan |
no guarda l'altezza non e da tener conto,nell'esempio 2 il prof dice che non è possibile inserire una nuova piastra,quindi altezza 0(non specifica sovrapposta ad altre ma dice soltanto adiacente),che sia adiacente a p5 altezza 3 e a p6 perchè se no bloccherebbe il macchinario |
jamez-hetfield |
Nell'esempio 3 però dice:
..
Si puo invece inserire una piastra q sovrapposta a p5 e a p6 e disgiunta da tutte le altre piastre del piano.
In tal caso viene creato un nuovo gruppo G = (p1 p2 p3 p4 p5 p6 q) (si noti che q ha altezza 4)
..
..in questo caso l'altezza conta eccome..sennò sarebbe tutto bloccato |
khelidan |
no assolutamente,te lo dice viene creato un nuovo gruppo e quindi le piastre da p1 a p6 girano tutte nello stesso senso,sinceramente non vedo il problema nel pezzo che hai citato |
jamez-hetfield |
..forse lo vedo solo io perchè non ragiono a gruppi..è un aspetto che ho giudicato da subito superfluo e ho tralasciato.. |
khelidan |
i gruppi hanno sempre la precedenza sulle adiacenze,io me la sono ragionata così,prima creo il gruppo attraverso le sue sovrapposizioni,e poi cerco le adiacenze del gruppo(ovviamente quelle che non appartengono al gruppo stesso),cioè se due piastre sono adiacenti ma facenti parte dello stesso gruppo,è da considerare solo l'appartenenza al gruppo e non l'adiacenza |
jamez-hetfield |
..io ho semplificato tutto al limite..nn esistono gruppi o altro..
Solo piastre e relazioni tra piastre di un certo tipo ('a' adiacenza o 's' sovrapposizione).. |
Sacratix |
premesso che io non fermo mai le piastre, ma la macchina associata, a me è risultato così:
per ogni macchina coinvolta, le piastre 'toccate' devono essere:
- adiacenti -> stesso senso
- sovrapposte ->stesso senso
- senso adiacenti != senso sovrapposte
non fermandole mai, poi devo anche aggiustare i sensi delle piastre coinvolte, ma ne vale la pena..
attiva @(1)
disattiva @(1)
nuova tanta roba lineare
elimina lineare anche questa |
jamez-hetfield |
Originally posted by Sacratix
nome[0] >= '0' && nome[0]<= '9'
--------------------------------------
l'esempio è
p 0 0 10 10 alfa
p 20 0 30 10 beta
p 5 0 25 10 gamma
e beta //o alfa tanto il risultato è lo stesso
m gamma
m alfa
m gamma
------------------------------------
nuovo problema,
quando elimino le liste
invece di mi trovo il campo nome = "" e l'eliminazione continua finchè non si pianta...
..il mio problema è simile..
Inserisco qualche piastra..
..ne elimino una..
..stampo il macchinario..
..la prima stampa ok..
..lo ristampo e mi appare una piastra nuova "(null) 0"..
..qualsiasi input gli do dopo va in crash..
Non so più dove spulciare il codice..
Te hai risolto in qualche modo?! |
jamez-hetfield |
Posto il primo test che sono riuscito a trascrivere..
..è grandi linee il grafico di esempio con le piastre che c'è sul testo del progettino (pag. 2)..
Non fa molto ma è già un inizio per controllare un pò di cose.. |
CaboM.BNA |
ciao gente...
ho un paio di dubbi da chiarire:
1.
Se ad esempio ho 3 piastre p1, p2, p3; con p2 che is sovrappone a p1 , e p3 che a sua volta si sovrappone a p1
(e di conseguenza le altezze saranno: p1->altezza == 0, p2->altezza == 1, p3->altezza ==2).
Se io attivo p3 facendola ruotare in senso orario. Questo implica che si attivano anche p2 e a sua volta p1?
2.
A proposito delle liste di adiacenza nei grafi (che anche io ho intenzione di usare per simulare adiacenze&sovrapposizioni tra piastre), il codie in C, dove l'avete preso?
Sul sito di ALGOTEAM ci sono delle strutture per realizzare i grafi, ma mi sembrano adatte per grafi statici, mentre i nostri sono dinamici
(l'inserimento e la cancellazione di piastre comportano una continua aggiunta e rimonzione di vertici e lati...) :?
Vi ringrazio in anticipo |
Sacratix |
Non, non ho risolto, ma ho creato un funzione stampatutto
e ho notato che mi capita di avere più volte la stessa piastra nella lista di adiacenza/sovrapposizione... quindi se la elimino una volta, le altre hanno nome vuoto
credo sia il tuo stesso problema, la differenza starà forse nel SO?
-------------------------
1. certo, tutte le piastre collegate si attivano
2. io ho usato una lista di puntatori a piastre |
CaboM.BNA |
Originally posted by Sacratix
...
2. io ho usato una lista di puntatori a piastre [/B]
infatti è quello che pensavo di usare anche io.
Un esempio è quella proposta nelle slides di Aguzzoli (ludici8).
A pag. 37 il prof. pero precisa :"Questa implementazione non è adatta ad applicazioni che modifichino frequentemente i grafi.
Anche se ad essere sincero non ho capito il perche... |
Sacratix |
con l'array invece.... sono perfette (!?) =.=
boh, mai viste...
la mia è poi solo che:
struct lista
{
lista* next;
piastra* data;
};
tanto, le operazioni che ci devi fare sono:
scorrerle tutte, una dopo l'altra, per visitare il grafo
aggiungere un elemento (lo fai in testa ed è finita lì)
eliminare un elemento (un pò piu lunga ma buono comunque) |
jamez-hetfield |
Raga, quesito..
p 2 1 6 2 a (h=0)
p 1 2 3 4 b (h=0)
p 5 2 7 4 c (h=0)
p 2 3 4 5 d (h=1)
p 4 3 6 5 e (h=1)
In caso di attivazione "d" ed "e" sono adiacenti, alla stessa altezza e ruotano nella stessa direzione..blocco? |
CaboM.BNA |
Originally posted by Sacratix
con l'array invece.... sono perfette (!?) =.=
boh, mai viste...
la mia è poi solo che:
struct lista
{
lista* next;
piastra* data;
};
tanto, le operazioni che ci devi fare sono:
scorrerle tutte, una dopo l'altra, per visitare il grafo
aggiungere un elemento (lo fai in testa ed è finita lì)
eliminare un elemento (un pò piu lunga ma buono comunque)
quoto tuttoquanto... ho fatto lo stesso... |
Sacratix |
esatto
adiacenti stessa direzione = blocco |
jamez-hetfield |
Originally posted by CaboM.BNA
quoto tuttoquanto... ho fatto lo stesso...
..quando andate ad eliminare un nodo avete ripulito bene tutti i puntatori?
Era il mio problema! |
jamez-hetfield |
Originally posted by Sacratix
esatto
adiacenti stessa direzione = blocco
Ok, allora in questo caso l'altezza conta (o dal tuo punto di vista abbiamo due gruppi incompatibili tra loro).. |
Sacratix |
ps.
guarda che le altezze, servono solo per eliminare tutte le piastre di una certa altezza
non comportano nient'altro
non c'entrano niente con adiacenze o sovrapposizioni
infatti, una volta assegnate, rimangono quelle |
Sacratix |
Originally posted by jamez-hetfield
Ok, allora in questo caso l'altezza conta (o dal tuo punto di vista abbiamo due gruppi incompatibili tra loro)..
dimenticatela |
jamez-hetfield |
Originally posted by Sacratix
dimenticatela
Hehe..se la dimentico devo rifare tutto il progettino! :P |
Sacratix |
*_*
il macchinario si blocca anche se fossero state su livelli diversi |
Sacratix |
per farti un esempio,
in cima al testo del progetto
dove c'è scritto cosa significa adiacente/sovrapposta
vedi da qualche parte l'altezza? |
jamez-hetfield |
Mmm..se fossero state su altezze diverse non avremmo un caso simile all'esempio 3?
..pag 3 terz'ultima riga:"Si può invece inserire una piastra q sovrapposta a ..." |
jamez-hetfield |
Raga..
..voi usate un ordine di attivazione particolare per le piastre?
Perchè nell'esempio in fondo al testo del progettino ho problemi con l'inserimento di theta..
Simulo un avvio x verificare il blocco che mi viene rilevato anche se non c'è..
Il problema è che theta entra nel gruppo di alfa (h=0) ed eta (h=1) ed è anche adiacente ad alfa..
Neel'output dell'esempio invece il blocco non c'è.. |
Deky |
jamez....cosa intendi per ripulire bene i puntatori quando elimini?? io sto sfasando con la funzione elimina....è impressionante...in alcuni macchinari funziona alla perfezione....in altri mi sfasa con le adiacenze o sovrapposizioni delle piastre ke restano.....incredibile.....
si accettano consigli.... :D |
khelidan |
Originally posted by Deky
jamez....cosa intendi per ripulire bene i puntatori quando elimini?? io sto sfasando con la funzione elimina....è impressionante...in alcuni macchinari funziona alla perfezione....in altri mi sfasa con le adiacenze o sovrapposizioni delle piastre ke restano.....incredibile.....
si accettano consigli.... :D
bello va che ho trovato un bel problema sul check del blocco,scazza sia a me che a te...:D |
khelidan |
Originally posted by jamez-hetfield
Raga..
..voi usate un ordine di attivazione particolare per le piastre?
Perchè nell'esempio in fondo al testo del progettino ho problemi con l'inserimento di theta..
Simulo un avvio x verificare il blocco che mi viene rilevato anche se non c'è..
Il problema è che theta entra nel gruppo di alfa (h=0) ed eta (h=1) ed è anche adiacente ad alfa..
Neel'output dell'esempio invece il blocco non c'è..
bhe ovvio se è nel groppo alfa non la devi considerare adiacente ad alfa |
khelidan |
Originally posted by jamez-hetfield
Mmm..se fossero state su altezze diverse non avremmo un caso simile all'esempio 3?
..pag 3 terz'ultima riga:"Si può invece inserire una piastra q sovrapposta a ..."
oddio è tre giorno che ti diciamo che l'altezza non conta!:asd: in quell'esempio la nuova piastra va a far gruppo con p5 e p6,stesso gruppo stessa rotazione,zero problemi! ;) |
jamez-hetfield |
Allora mi sa che mi tocca rivoluzionare un pò le cose e gestire sti cazzo di gruppi..
..sennò nn so cm potrei fare..che palle! |
CaboM.BNA |
a proposito delle altezze...
ecco piccolo dubbio: guardate la figura in "Esempio 2" del testo.
E' lecito eliminare la piastra p18?
Ossia possiamo eleminare piastre che si trovano sotto ad altre piastre?
Io penso di si, e credo anche che dopo l'eliminazione l'altezza di p19 non cambi.. [poiche nel testo di precisa che "
l'altezza di una piastra non cambia durante l'esecuzione del programma ] |
khelidan |
si penso proprio di si,anche perchè se no non avrebbe avuto necessità di precisare che l'altezza rimane costante |
pirlo21 |
credo anche io...poi nel testo non dice da nessuna parte di eseguire dei controlli anche durante le eliminazioni...
ragazzi una curiosità: ma bisogna iscriversi per fare il progettino e l'orale? |
Sacratix |
dovevi scriverti solo allo scritto
------------------------------------------
quoto tutto quello che ti ha detto Khelidan |
khelidan |
o all'orale se fai con torelli |
jamez-hetfield |
Raga..
..se ho:
p -10 4 -4 8 alfa (con h=0)
p -4 0 1 10 iota (con h=3)
p -5 7 -3 9 gamma (con h=4)
(..le altezze sono così perchè non sono a inizio esecuzione..)
..fanno tutte parte di un gruppo?! |
Sacratix |
e approposito di questo caso particolare, in cui sue piastre adiacenti diventano sovrapposte
(anche se indirettamente) perchè:
"esiste un percorso di sovrapposizione tra loro"
c'è un BUGGONE ENORME!!!! <--- nel testo del progetto (lol)
perchè questo vuol dire che anche la delete può bloccare un macchinario
adesso vi faccio il disegnino così vedete subito dov'è il problema |
Sacratix |
le piastre vengono inserite nell'ordine alfabetico
a, b, c, d
ma se poi eliminassimo 'c' ??? |
jamez-hetfield |
..raga..qualcuno ha qualche consiglio pratico per velocizzare la fase di analisi del costo? (speravo di poter consegnare la copia cartacea domani già che devo andare a milano per l'orale di reti..cazzo gli servirà poi una copia cartacea) |
khelidan |
Originally posted by Sacratix
e approposito di questo caso particolare, in cui sue piastre adiacenti diventano sovrapposte
(anche se indirettamente) perchè:
"esiste un percorso di sovrapposizione tra loro"
c'è un BUGGONE ENORME!!!! <--- nel testo del progetto (lol)
perchè questo vuol dire che anche la delete può bloccare un macchinario
adesso vi faccio il disegnino così vedete subito dov'è il problema
e vero hai ragione,ma suppongo ormai sia un troppo tardi per avvisare ilprof! :asd: |
Deky |
se devo mettere un controllo del genere me lo taglio....mi sn rotto 3 / 4 di tutti sti casi..e il delete ancora nn funge a meraviglia... -.- |
Sacratix |
probabile,
ma spererei che, dicendoglielo, appunto perchè tardi, mi dicesse
di non fare inserire 'c'
[perchè il mio codice già non lo fà] |
jamez-hetfield |
Scusate raga..
..ma nell'ultimo esempio..a fine testo del progetto..a voi risulta che "mu" non blocca il macchinario?!
..perchè l'esempio dice di no..ma io mi son fatto il disegno delle piastre passo passo ed eccome se si blocca..magari m'è sfuggito qualche passaggio.. |
jamez-hetfield |
Originally posted by Sacratix
le piastre vengono inserite nell'ordine alfabetico
a, b, c, d
ma se poi eliminassimo 'c' ???
..ecco, è quasi il problema che riscontro io con "mu" a fine esercizio..
La differenza è che "mu" è sopra e le piastre adiacenti sotto..il mio progetto lo rileva come un blocco..e mi sa tanto che resterà così..
Mah, per me questo progetto è nato male dall'inizio..spiegato ancor peggio..
..bastava indirizzare la cosa sull'aspetto reale: gli ingranaggi..avrebbe avuto MOLTO più senso e non ci sarebbero stati tutti sti casi del c***o da considerare (che tra l'altro non sono stati considerati nemmeno dai creatori del progetto).. |
jamez-hetfield |
..cmq ragazzi x me non ha senso..
Una piastra sovrapposta a due adiacenti non può stare..gruppo o no..
..e non sto dicendo che il prof ha detto così..sto dicendo che a logica secondo la definizione di piastra non ha senso.. |
jamez-hetfield |
..secondo la MIA logica..ovvio.. |
khelidan |
scusate ma la riga 19 dell'input a me il macchinario di zeta viene solo: zeta epsilon e beta!delta è gia stato eliminato,eta non è ancora inserito perchè nel primo tentativo blocca il macchinario,i due macchinari che sono sul piano restano divisi,mi viene cosi anche facendolo a mano! |
jamez-hetfield |
Originally posted by khelidan
scusate ma la riga 19 dell'input a me il macchinario di zeta viene solo: zeta epsilon e beta!delta è gia stato eliminato,eta non è ancora inserito perchè nel primo tentativo blocca il macchinario,i due macchinari che sono sul piano restano divisi,mi viene cosi anche facendolo a mano!
..è giusto!
(
beta 0
epsilon 0
zeta 0
)
..probabilmente hai la prima versione del testo..poi è stato corretto.. |
Sacratix |
anche la mia, infatti non sò come aggiustarla in modo che me la lasci inserire |
jamez-hetfield |
Originally posted by Sacratix
anche la mia, infatti non sò come aggiustarla in modo che me la lasci inserire
..guarda, a partire dalla mia implementazione è abbastanza impossibile (così come dalla tua penso :) )..sono quasi per passar alla documentazione e consegnar così..
..dovrei rivoluzionare tutto..praticamente rifare tutto..
..contanto poi che il 20 è una consegna ufficiale (quella ufficiosa è il 19, magari però mi sbaglio..la domenica l'uni è aperta?) |
Sacratix |
no, il 20 via posta, il 21 via carta |
CaboM.BNA |
Originally posted by Sacratix
le piastre vengono inserite nell'ordine alfabetico
a, b, c, d
ma se poi eliminassimo 'c' ???
scusate per la latenza, ma sono appena tonrato a casa...
cmq a me qualcosa nel tuo esempio NON torna: "c" NON dovresti poterlo inserire dopo "a" e "b". perche "a" e "b" ruotano in sensi opposti, e "c" che si sovrappone ad ENTRAMBI dovrebbe ruotare SIA in senso antiorario SIA in quello orario..
(o sbaglio?) |
khelidan |
no giusto hai ragione,ora l'ho provato e mi rileva il blocco in inserimento in effetti |
jamez-hetfield |
Originally posted by Sacratix
no, il 20 via posta, il 21 via carta
..mmm, il testo del progettino dice 20 anche per la copia cartacea.. |
khelidan |
Originally posted by jamez-hetfield
..mmm, il testo del progettino dice 20 anche per la copia cartacea..
si ma sicuro non avranno visto che era domenica,se no a che pro indicare il 20 come data ultima?se devo consegnare già il 19?
p.s:credo che il via carta sia solo un "backup" per evitare storie del tipo"ma io la mail l'ho mandata ecc" |
jamez-hetfield |
Originally posted by CaboM.BNA
scusate per la latenza, ma sono appena tonrato a casa...
cmq a me qualcosa nel tuo esempio NON torna: "c" NON dovresti poterlo inserire dopo "a" e "b". perche "a" e "b" ruotano in sensi opposti, e "c" che si sovrappone ad ENTRAMBI dovrebbe ruotare SIA in senso antiorario SIA in quello orario..
(o sbaglio?)
..in TEORIA "c" crea un famoso gruppo (led zeppelin) con "a" e "b" facendo si che tutti si muovano nello stesso senso (e il prof a quanto pare vuole sia così perchè come dicevo nel LUNGO esempio finale l'inserimento di "mu" crea qualcosa di ESTREMAMENTE analogo)..in PRATICA (e a logica) NON HA SENSO..
..scusate raga ma sto sclerando..
Ciao CaboM.BNA tùt bè?! |
jamez-hetfield |
Originally posted by khelidan
si ma sicuro non avranno visto che era domenica,se no a che pro indicare il 20 come data ultima?se devo consegnare già il 19?
p.s:credo che il via carta sia solo un "backup" per evitare storie del tipo"ma io la mail l'ho mandata ecc"
..hehe, io di certe cose non mi meraviglio più.. |
khelidan |
Originally posted by jamez-hetfield
..in TEORIA "c" crea un famoso gruppo (led zeppelin) con "a" e "b" facendo si che tutti si muovano nello stesso senso (e il prof a quanto pare vuole sia così perchè come dicevo nel LUNGO esempio finale l'inserimento di "mu" crea qualcosa di ESTREMAMENTE analogo)..in PRATICA (e a logica) NON HA SENSO..
..scusate raga ma sto sclerando..
Ciao CaboM.BNA tùt bè?!
quel caso blocca cmq tutto,secondo me semplicemente non è stato considerato dai prof,un caso limite diciamo |
jamez-hetfield |
SONDAGGIO: chi è riuscito a portare a termine l'esempio in fondo al testo del progetto? |
khelidan |
edit.....è la decima volta che sbaglio a mettere l'input |
jamez-hetfield |
Chi sa illuminarmi?
..nel calcolo del costo io procedo così?
Costo_TOT = istruzione1*(#volte che viene eseguita)+istruzione2*(#volte che viene eseguita)+ecc..
..sono sulla strada giusta?
E poi:
..il costo di un if del genere:
if( ((a == b)&&(c == d)) || ((e == f)&&(g == h)) ) è 7?
..grazie in anticipo! |
CaboM.BNA |
Originally posted by jamez-hetfield
..in TEORIA "c" crea un famoso gruppo (led zeppelin) con "a" e "b" facendo si che tutti si muovano nello stesso senso (e il prof a quanto pare vuole sia così perchè come dicevo nel LUNGO esempio finale l'inserimento di "mu" crea qualcosa di ESTREMAMENTE analogo)..in PRATICA (e a logica) NON HA SENSO..
..scusate raga ma sto sclerando..
Ciao CaboM.BNA tùt bè?!
lol un altro bergamasco...
-->edit: visto solo adex la sigla BS di james... scusa per il "bergamasco" ;)
cmq non ho capito. Cerco di spiegare come la vedo io.
"a" ha nella sua lista di adiacenza "b" e "c".
"b" ha nella sua lista di adiacenza "a" e "c".
"c" ha nella sua lista di adiacenza "a" e "b".
SIMULANDO l'attivazione, parto da "a".
Percorro prima la lista di "a". Attivo "a" in senso orario, "b" in senso antiorario (in quanto adiacente), "c" in senso orario (in quanto sovrapposto ad "a").
Adesso percorro la lista di "b". "b" è gia attivo, ma attivo in senso orario quelli a lui adiacenti ("a", che è gia attivo) e in senso ANTIORARIO quelli sovrapposti (ma "c" è GIA STATO ATTIVATO IN SENSO orario). Arrivo perciò ad un BLOCCO... [etc. poi con la lista di "b", se non avessi rilevato il blocco..]
Concordate? |
Sacratix |
allora allora allora:
pagina 9 del testo del progetto, punto 2.
[...]Tale materiale va consegnata al dr. Fiorentini entro lunedì 21 luglio (compreso)[...]
x jamez:
io lo faccio in modo un pò diverso
anche se così, in via generica, è un pò difficile da spiegare
dal momento che tutte le operazioni si svolgono sulle piastre
però, è inutile mettersi a contare gli if
perchè i risultati sarebbero del tipo
o(Kn) dove K è una costante che si può ignorare
infatti o(5n) = o(1/2 * n) = (n)
ha peso maggiore un ciclo, tenendo quindi conto di quante volte
viene eseguito, senza dimenticare il costo di altre funzioni che richiama all'interno
es improbabile ma utile:
for( i=0; i<n; i++)
{
.....
.....
f( #####) ----> O(logn)
.....
.....
}
sarà nlogn
x CaboM
allora siamo in tre...
le piastre sono sì adiacenti, e quindi con senso opposto,
ma
le piastre di un gruppo girano nello stesso senso
e un gruppo è un'insieme di piastre connesse tramite un cammino di sovrapposizione [non per forza direttamente sovrapposte]
quindi 'a' e 'b'
diventano un gruppo
e si sovrappongono tramite 'c' |
CaboM.BNA |
sto VAGAMENTE intuendo quello che mi dici...
tuttavia ribadisco che secondo me "c" non si dovrebbe poter inserire.
inserendo solo "a" e "b" queste fanno parte di due gruppi diversi.
aggiungendo "c", avviene che:
"c" fa parte del gruppo di "a" && "c" fa parte del gruppo di "b"... ->BLOCCO.
p.s. AGUZZOLI ha indicato il 20 come termine per la consegna pure del cartaceo. Gli ho mandato una mail poi vi faccio sapere se si puo consegnare relazione+codice stampato anche lunedi... |
Sacratix |
nell'esempio del testo, già l'inserimento di theta mi causa un blocco,
perchè risulta
adiacente ad alfa ed epsilo, di senso opposto (BLOCCO)
sovrapposta ad eta e delta, stesso senso (OK)
ma il senso di alfa ed epsilon è uguale (BLOCCO)
il problema non si pone se simulate l'intero avvio del macchinario, prima dalle sovrapposizione, poi dalle adiacenze.
l'unica idea che mi viene in mente per sistemare questo problema
e accettare l'inserimento, se come me non simulate
è lo spostamento di tutte quelle piastre adiacenti, che andrebbero a finire nello stesso gruppo, nella lista delle sovrapposte
[operazione inversa nella delete]
ma la cosa può risultare lunga e tanto valeva simularne l'avvio |
Sacratix |
Originally posted by CaboM.BNA
p.s. AGUZZOLI ha indicato il 20 come termine per la consegna pure del cartaceo. Gli ho mandato una mail poi vi faccio sapere se si puo consegnare relazione+codice stampato anche lunedi...
ma che 2 :ignore: |
CaboM.BNA |
LA RELAZIONE CARTACEA PUO' ESSERE CONSEGNATA LUNEDI.
(risposta del prof. Aguzzoli) |
khelidan |
io ho un problema è da ieri che ci sto a dietro,dopo che faccio una delete mi ritrovo in alcuni nodi le adiacenze(sovrapposizioni) sballate,come se dopo la delete i puntatori che ho nelle mie liste di adiacenza puntassero a qualche altro nodo,qualcuno ha avuto lo stesso problema?? |
Sacratix |
grazie al cielo, no.
non sò come hai implementato la delete, però
o hai un errore nella funzione che ti elimina un elemento dalla lista [ma và!]
o se lo fai mentre esplori il grafo, salti qualche elemento [capita]
o come succedeva a me, avevi qualche elemento duplicato nelle liste |
khelidan |
no ma sai quale è il bello,le liste sono coerenti dopo la delete,però poi quando vado a inserire un altro nodo,alcune volte mi si sballano le liste di adiacenza di nodi che non centrano niente con l'ultimo inserito,e poi per come ho fatto io l'inserimento è impossibile che il nuovo nodo finisca per sbaglio lì,per quello ho pensato a qualche puntatore sballato dopo la delete,e succede solo e soltanto dopo la delete,se non avevo sto problema avevo finita da ieri |
Sacratix |
guarda
per risolvere certi problemi
c'è solo una cosa da fare
printf("\ncontrollo x\n");
void stampa_tutto(###);
la metti dopo ogni blocco di istruzioni sospette
e vedi subito quando il problema salta fuori
per capire perchè poi è un'altra storia
poi mi auguro che nessuno qua stia debuggando con il blocco note,
ma con un compilatore che implementi il 'watch'... |
Sacratix |
welaah, nessunissimissimo problema di compilazione, indipendentemente dalle opzioni usate
per qualche strano motivo ero convinto che i commenti /* */
fossero di c++ e // di c
mi confondevo, era il contrario |
|
|
|
|