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] 
[Algoritmi] Progetto "CONTROLLO REMOTO"
Clicca QUI per vedere il messaggio nel forum
Teju
Originally posted by p2p
io sto usando un RB...

Beh, anche un RB Albero può avere un suo ordine logico e permetterti di trovare gli elementi con prefisso alfa in fretta senza scorrere tutto...

Per l'inserimento degli ostacoli cmq anch'io mi giro tutto l'alberello degli automi... :sad: :D

Dav83
Gira che ti rigira io ho usato due liste. Poco inefficiente ma molto pratico.Per le operazioni d'inserimento che sono quelle che almeno nell'input del prof. si ripetono più spesso ho usato l'inserimento in testa e per gli spostamenti...bè non ti resta che scorrere...
Ho un problema sull'output dell'automa 001.
Quando inserisco l'automa 0010 le coordinate diventano identiche e anche la direzione...
in pratica ottengo
001 16 0 W (dovrebbe essere S)
0010 16 0 W
quendo poi faccio gli ultimi spostamenti ottnego questa cosa curiosa:
(
001 15 1 W
0010 15 -1 W
)
Suggerimenti???

p2p
Originally posted by Teju
Beh, anche un RB Albero può avere un suo ordine logico e permetterti di trovare gli elementi con prefisso alfa in fretta senza scorrere tutto...

Per l'inserimento degli ostacoli cmq anch'io mi giro tutto l'alberello degli automi... :sad: :D

purtroppo non è cosi, xchè se per esempio il prefisso è 1 ci saranno nodi prefissi a 1 sia a sx della radice che a dx, quindi un confronto per chiavi (i nomi degli automi nel mio caso) non servirebbe.Per esempio posso avere 100 (un 4 ) in un sottoalbero sinistro e un 1111 (un 15) in un sottoalbero destro, quindi se il prefisso è 1 e io seguo la ricerca in base ai valori mi perdo una chiave.:evil: :twisted:

azzz.......

certo l inserimento e la cancellazionesono + efficienti, ma x 2 operazioni piu' veloci valeva la pena????

mitnik
ma come avete implementato lo spostamento di un automa?

Teju
Originally posted by p2p
purtroppo non è cosi, xchè se per esempio il prefisso è 1 ci saranno nodi prefissi a 1 sia a sx della radice che a dx
[...]
certo l inserimento e la cancellazionesono + efficienti, ma x 2 operazioni piu' veloci valeva la pena????

C'hai ragione, avevo confuso le strutture dati... :-D
...secondo me l'operazione più ricorrente è quella di movimento, perchè su ogni segnale ci sono moltissimi movimenti su diversi automi, dunque segnale() dovrebbe essere la funzione che più è veloce!

Teju
Originally posted by Dav83
Ho un problema sull'output dell'automa 001.
Quando inserisco l'automa 0010 le coordinate diventano identiche e anche la direzione...
in pratica ottengo
001 16 0 W (dovrebbe essere S)
0010 16 0 W
quendo poi faccio gli ultimi spostamenti ottnego questa cosa curiosa:
(
001 15 1 W
0010 15 -1 W
)

Beh... detto così può essere tutto!! Eheh!! :D :D
Dipende da come fai l'inserimento di nuovi automi e da come fai il movimento... con i soli risultati è dura aiutarti! :approved:

Teju
Originally posted by mitnik
ma come avete implementato lo spostamento di un automa?

Prima di tutto devi trovare quali sono gli automi che ti interessano nel movimento, poi, per ciascuno, lanci una funzione che calcola il movimento:
- cerca aventuali ostacoli sulla sua strada
- se non ne incontra arriva al punto di destinazione
- se li incontra rimbalza di quanti spostamenti gli mancano in direzione opposta

mitnik
Originally posted by Teju
Prima di tutto devi trovare quali sono gli automi che ti interessano nel movimento, poi, per ciascuno, lanci una funzione che calcola il movimento:
- cerca aventuali ostacoli sulla sua strada
- se non ne incontra arriva al punto di destinazione
- se li incontra rimbalza di quanti spostamenti gli mancano in direzione opposta



ok grazie ma il mio problema è quello di aggiornare la direzione dell'automa. Dici che è sufficiente tenere un puntatore fisso su tale automa e una volta finito lo spostamento aggiorno l'utoma puntato?

Teju
Originally posted by mitnik
ok grazie ma il mio problema è quello di aggiornare la direzione dell'automa. Dici che è sufficiente tenere un puntatore fisso su tale automa e una volta finito lo spostamento aggiorno l'utoma puntato?

Si, io ho nella funzione il puntatore all'automa corrente e, ad ogni fine movimento aggiorno coordinate e direzione

p2p
voi per vedere se nelle coordinate di un ostacolo cè un automa come avete fatto?
io avevo pensato a 2 for che ciclando passano ad una funzione i vari punti compresi tra x0 x1 e y0 y1 e questa controlla nelle x e y degli automi se trova una corrispondenza....
voi come avete fatto?

LoneWolf
Scusate ragazzi se non mi sono fatto sentire da sabato sera, ma da uando ho finito il progetto (appunto sabato sera) ho fatto baldoria tutto il tempo.

Come vi avevo già accennato, io ho usato B-albero, che a mio parere è la migliore struttura per la ricerca su prefissi di testo (stringhe), mentre gli altri alberi lavorano bene solo su chiavi numeriche.

Per gli ostacoli ho utilizzato una lista non ordinata, tanto me la devo sfogliare tutta, quindi l'ordine non mi serviva.

Per la questione delle collisioni con gli ostacoli, ho trovato un sistema spettacolare, ma non ve lo posso confidare.

Sorry!:D

dirkpitt
Postate qualche esempio... :D

andrea
Ciao ragazzi, ieri sono arrivato anche io al grande momento di veder funzionare l'esempio del prof. Onestamente non ho fatto, e forse non farò, tanti altri esempi per non andare a cercarmi rogne. Ringrazio chi ha avuto l'intuizione del "riposizionere" perchè o non ci sarei mai arrivato o avrei perso un casino di tempo. Se cambiassi idea e decidessi di inventarmi qualche esempietto ve lo posto.

Ho una curiosità: ma se si deve consegnare entro il 30, come fa uno ad andare a fare l'esame il 31 di gennaio? Come ci si organizza?

LoneWolf
Ragazzi, toglietemi una curiosità: quando fate la crea(), ipoteticamente bisogna distruggere le strutture di memoria eventualmente già presenti, per poi ricreare quelle vuote per il nuovo piano.

Voi fate la free()? E se la fate, la fate solo sul primo elemento o svuotate tutti i nodi degli alberi/elementi delle liste?

andrea
sì, bisogna fare la free assolutamente di tutti gli elementi delle strutture dati, perchè altrimenti rimangono allocati. Ma se continui ad allocare senza liberare, lo spazio di memoria libero diminuisce fino, ipoteticamente, a non averne più e questo sarebbe un problema.

Teju
Tempi di esecuzione
Domandina... ma voi li mettete nella relazione? Cosa fate: di ogni funzione mettere il relativo tempo o una cosa generica... o non li mettete proprio? :D

...cmq a parte tutto: un aiutino!

Mettiamo caso che nella funzione segnale, "alfa" corrisponda alla radice dell'albero, significa che dovremo sfogliate tutti i nodi dell'albero con un tempo nel caso peggiore (quando l'albero degenera in una lista) di O(n). Di ogni automa che muoveremo dovremo sfogliare una o più volte l'intera lista di ostacoli... forse che forse che il tempo nel caso peggiore diventa non polinomiale?!?

:shock: :shock: HELP!!!!!!!!!!! :shock: :shock:

PS: spero proprio di sbagliarmi!!!!! :D

andrea
Onestamente io ste storie dei tempi non è che le abbia capite bene. O meglio cerco di limitarmi a descrivere i tempi delle funzioni di cui sono certo. Per esempio una funzione che scorre una lista. Se ho una funzione che chiama altre funzioni che scorrono liste, descrivo i tempi di queste ultime, non della chiamante. Spero di essermi spiegato.

jonny001
scusate volevo sapere come avevate risolto il fatto di riuscire a fare leggere gli interi che sono in beta nella funzione segnale.
avendo io dichiarato beta come un puntatore di char.

Teju
Originally posted by jonny001
scusate volevo sapere come avevate risolto il fatto di riuscire a fare leggere gli interi che sono in beta nella funzione segnale.
avendo io dichiarato beta come un puntatore di char.

Esiste una funzione, atoi(), che trasforma un char in intero... :D

p2p
scusate, riuscite a capire come mai quest istruzione non fa nulla?

if ( (a >=q->x0 && a<=q->x1) && (b >=q->y0 && b<=q->y1) ){
printf....
else...

q è una lista

andrea
prova a mettere le parentesi così:

if ( (a >= q->x0) &&
(a <= q->x1) &&
(b >= q->y0) &&
(b <= q->y1) )
{
printf....
}
else...
{
}

p2p
grazie, ho risolto,avevo dimenticato in un altro punto un assegnamento all elemento che punta all inizio della lista, quindi la lista era sempre vuota!
1/2 giornata x sta cXXata!

grazie 1000

joe.satriani
Sul esempio dato sul testo, dopo aver fatto queste istruzioni:
c
a 12 6 S 001
a 12 3 N 010
a 15 6 W 011
a 9 6 E 0101
o -2 -1 7 8
o 3 -5 10 6
o 15 2 18 5
o 8 1 13 4
o 7 10 18 12
o 8 -4 19 -2
s 01 A3
p 0
o 15 -3 18 11
s 0 A4E7A8
p 0
e 12 1
e 16 2
a 16 0 W 001
a 16 0 S 0010

l'istruzione s 001 A10S4E1W2 sposta i due automi appena inseriti in (16 0); consideriamo 001:
A10: fa 6 passi verso sinistra, poi cambia direzione per la presenza dell'ostacolo (3, -5, 10 6) e 3 passi a destra per arrivare in in (13, 0);
S4: sposta l'automa in (13, -4);
E1: lo sposta in (14, -4);
W2: in (12, -4);
perchè sulla traccia invece va a finire in (12, -1)?

anche per quanto riguarda 0010 mi viene un altro risultato, mentre per tutto il resto non ho problemi.
sono io che sbaglio?

Dav83
Sono anch'io nella tua stessa situazione ma 001 diventa:((15, 1). Per quanto riguarda 0010 invece il mio risultato viene corretto. Ho pensato che ci sia qualcosa nella funzione segnale che non funzioni a dovere ma non è così...non saprei che dire!!!
Ma ti inserisce tutti gli ostacoli?A me non viene inserito l'ostacolo:
o 8 1 13 4
E' normale???

joe.satriani
anche a me non viene inserito l'ostacolo [8 1 13 4] (e secondo me è giusto così) e nel dubbio ho mandato una mail ad aguzzoli ma non mi ha ancora risposto.
tu credi che ciò possa cambiare l risultato?

0010 è in 16 0 e và a S quindi:
A10 lo porta in (16, -10)
S4 lo porta in (16, -14)
E1 lo porta in (17, -14)
W2 lo porta in (15, -14)

Teju
Originally posted by p2p
1/2 giornata x sta cXXata!

Le cose che non ricontrolli mai perchè ti ritieni certo non si possano sbagliare, ecco, sono quelle che fan perdere giornate di lavoro e pazienza!!! :D

Teju
Originally posted by joe.satriani
anche per quanto riguarda 0010 mi viene un altro risultato, mentre per tutto il resto non ho problemi.
sono io che sbaglio?

Ma il tuo "per tutto il resto non ho problemi" significa che il codice produce l'esatto risultato o tu, a mano o su un excel ottieni un certo risultato?
Cmq se n'è già discusso qualche pagina fa degli ostacoli, date un occhio!! :)

joe.satriani
[QUOTE]Originally posted by Teju
[B]Ma il tuo "per tutto il resto non ho problemi" significa che il codice produce l'esatto risultato o tu, a mano o su un excel ottieni un certo risultato?

il codice produce un esatto risultato. Io dopo aver verificato a mano credo che la penultima (e non l'ultima che invece mi trovo)stampa debba essere:
(
001: 12, -4, W
0010: 15, -14, W
)
e non
(
001: 12, -1, W
0010: 15, 1, W
)
preche si spostano come ho detto prima. Se qualcuno concorda con l'output della traccia che mi dica perchè 001 va a finire in (12,-1) e 0010 in (15, 1)

andrea
Rispondo a joe:

il rettangolo 8 1 13 4 non viene posizionato perchè c'è un automa, ed è giusto.

Il tuo errore è qui:
S4: sposta l'automa in (13, -4);

infatti c'è il rettangolo 8 -4 19 -2 che non può farti arrivare l'automa fino a 13 -4. Arriva fino a 13 -2, cambia direzione e si ferma a 13 -1. Di conseguenza ottieni quello che ottiene il professore.

dirkpitt
Qualcuno sa se è possibile consegnare la copia cartacea del progetto e della relazione lunedì mattina presto nella casella del prof Aguzzoli o dev'essere per forza fatto domenica?? :? Sarebbe una gran cosa per chi viene, come me, da (molto) fuori milano...

andrea
il testo di Fiorentini dice che la copia cartacea va consegnata entro il 31. Io la porto lunedì.

dirkpitt
Originally posted by andrea
il testo di Fiorentini dice che la copia cartacea va consegnata entro il 31. Io la porto lunedì.

Il testo di Aguzzoli, invece, dice entro il 30. In ogni caso gli ho mandato un'e-mail... speriamo risponda!

joe.satriani
Originally posted by andrea
Rispondo a joe:

il rettangolo 8 1 13 4 non viene posizionato perchè c'è un automa, ed è giusto.

Il tuo errore è qui:
S4: sposta l'automa in (13, -4);

infatti c'è il rettangolo 8 -4 19 -2 che non può farti arrivare l'automa fino a 13 -4. Arriva fino a 13 -2, cambia direzione e si ferma a 13 -1. Di conseguenza ottieni quello che ottiene il professore.



grazieeeeeeeeeeeeeee, inserivo l'ostacolo (8, -4, 19, 2) al posto di (8, -4, 19, -2) e il comando e 12 1 lo eliminava. adesso funziona tutto!:birrozza:

dirkpitt
Originally posted by dirkpitt
Qualcuno sa se è possibile consegnare la copia cartacea del progetto e della relazione lunedì mattina presto nella casella del prof Aguzzoli o dev'essere per forza fatto domenica?? :? Sarebbe una gran cosa per chi viene, come me, da (molto) fuori milano...

Ottimo, il prof Aguzzoli ha risposto che anche per lui va bene che le copie cartacee siano consegnate lunedì mattina.

mitnik
Bene l'esempio del prof funziona... Dovrei avere finito, qualcuno ha qualche esempio "strano" da postare?

Ultima cosa, il programma funziona però l'ordine con cui stampo l'output a video non è esattamente come quello del testo. Ho riletto il testo un sacco di volte e non ho trovato vincoli su come si debba stampare a video. Io lo lascio così che dite?

dirkpitt
Originally posted by mitnik
Bene l'esempio del prof funziona... Dovrei avere finito, qualcuno ha qualche esempio "strano" da postare?

Ultima cosa, il programma funziona però l'ordine con cui stampo l'output a video non è esattamente come quello del testo. Ho riletto il testo un sacco di volte e non ho trovato vincoli su come si debba stampare a video. Io lo lascio così che dite?

Esatto, non ci sono vincoli sull'ordinamento! Se n'è già parlato un po' di pagine fa :-D

mitnik
ok allora finisco la relazione e consegno.. sperem..

joe.satriani
per l'ordinamento non c'è nessun vincolo (è scritto sulla pagina del progetto).

Qualcuno conosce i codici ascii per ottenere i caratteri TETA, BASE e TETTO? mi servono per scrivere la relazione.....

Teju
...io ho consegnato oggi! :D

p2p
domandina dell' ultima ora:

io uso:

char *alpha = strtok(segnale," ");
char *beta = strtok(NULL," ");

per dividere nell istruzione s 01 N2S4 il 1° blocco(lo 01) dal 2°; quando vado a cercarmi i prefissi di 01 utilizzo strncmp(alpha,automa->nome,strlen(alpha) ), e la cosa strana è che mi dice che sono diversi anche se non è vero.siccome strncmp l ho gia' usata x un altra funzione(e va bene) probabilmente sara' strtok che magari aggiunge qualcosa alla stringa beta ..... o va a sapere...

qualcuno mi sa aiutare??
:(

Teju
Originally posted by p2p
strtok

...mi spiace ma non conosco questa istruzione...

Consiglio però: leggi il primo carattere di beta che di sicuro è un char, poi leggi tot caratteri finchè trovi un numero e li salvi in un array che poi, tramite la atoi() cambi in int, poi rileggi il carattere... finchè il tuo carattere != '\0'

LazerPhEa
Originally posted by p2p
domandina dell' ultima ora:

io uso:

char *alpha = strtok(segnale," ");
char *beta = strtok(NULL," ");

Scusa, non vorrei sbagliarmi... ma Fiorentini non vuole mica che il parsing dello stdin sia fatto solo con scanf e getc ? Se non ricordo male anche io ai tempi usai la strtok, ma accortomi della postilla modificai la routine di parsing...

p2p
Originally posted by LazerPhEa
Scusa, non vorrei sbagliarmi... ma Fiorentini non vuole mica che il parsing dello stdin sia fatto solo con scanf e getc ? Se non ricordo male anche io ai tempi usai la strtok, ma accortomi della postilla modificai la routine di parsing...


si, xò qui il problema è che non sai quanto sara' grande l' input, quindi utilizzo una realloc e un *char, alla fine avro' una stringa unica che devo dividere.tanto anche strtok è conforme ANSI, non credo mi fara' problemi.... almeno spero, anche xchè oggi è l ultimo giorno e ho altri problemucci da correggere

Freddy3
Anche io non conosco quella funzione.
Io ho usato la scanf con opzione %s per leggere l'input...

superfabius
Potete mettere qualche progetto nell'area filez? Oppure inviatemelo a superfabius@yahoo.it

Freddy3
Ma qualcuno di voi sa cosa viene chiesto durante la discussione del progetto?
Io non devo fare l'orale e chiedevo cosa Aguzzoli chiede durante la discussione per capire cosa studiare, rivedere ecc...

superfabius
Originally posted by superfabius
Potete mettere qualche progetto nell'area filez? Oppure inviatemelo a superfabius@yahoo.it

Motomax
Ciao
Io sfortunatamente non ho potuto frequentare e avrei bisogno di alcune info su come si svolge l'esame......mi sono iscritto a quello dell'11/02. le domande che ho sono:
1) il progetto verrà publicato sul suo sito?
2) quanto tempo da per consegnarlo?
3) l'orale e la discussione del progetto sono due cose diverse oppure tutta una?
4) l'orale viene fatto dopo la consegna del progetto?

Grazie per l'aiuto in anticipo

gboavm
Chi è così gentile da postare il prog. CONTROLLO REMOTO.
Una grazie in anticipo

gboavm
il codice naturalmente,
ciao

LoneWolf
Scusate, cancellate pure il post.

superfabius
ma ve lo dobbiamo pagare sto codice?

Bloody
Originally posted by Freddy3
Ma qualcuno di voi sa cosa viene chiesto durante la discussione del progetto?
Io non devo fare l'orale e chiedevo cosa Aguzzoli chiede durante la discussione per capire cosa studiare, rivedere ecc...


dice "mi parli delle strutture dati che ha usato" e tu gliele descrivi motivandole brevemente (generalmente "perchè è semplice e il tempo di esecuzione è accettabile" e simili..)
poi ti chiede di simulare gli algoritmi su un foglio di carta, cmq niente di difficile, vai tranquillo! ;)

Skilotto83
essendo i due progetti molto simili nn vorrei che il codice nn possa essere postato in quanto considerato elaborato in corso...pero' boh...
e kmq credo che ki abbia fatto il vecchio prog ora stia cercando di approfittare del fatto che sono simili per "offrirlo" a qualkun'altrol...

andrea
Per info sull'orale guardate il thread specifico sull'orale di Torelli

Teju
Originally posted by superfabius
ma ve lo dobbiamo pagare sto codice?

Se guardi il 3d relativo al corso trovi il link per il mio codice... basta guardare a volte meglio e le cose si trovano!! :D

Buon progetto!

Oracle
Originally posted by Teju
Se guardi il 3d relativo al corso trovi il link per il mio codice... basta guardare a volte meglio e le cose si trovano!! :D

Buon progetto!


Anche se lo ripostavi non facevi certo fatica e contribuivi ad ottimizzare i tempi di ricerca ;-)

yoruno
Intervento del moderatore:
Teju, messo sul tuo sito nessuno lo trova, potresti metterlo in Filez in modo che rimanga sul Dsy... :)

Freddy3
Grazie della consulenza Bloody!!!

:D :-D :)

zac111
scusate ragazzi non è che potete inviare il testo del progetto
controllo remoto?
grazie

vlaste
Qualcuno che ha svolto con successo il progetto lo potrebbe postare nell'area filez???
Grazie....

Teju
Io vi ho già scritto dove trovare il mio, di certo io nell'area filez non lo posto xkè va bene aiutare, dire dove trovare la roba, ma poi se non ci si scanta un minimo minimo minimo (vuol dire seguire un link al posto di un altro, mica la luna...) poi nella vita che si diventa???

mattcobain
Originally posted by Teju
...di certo io nell'area filez non lo posto xkè va bene aiutare, dire dove trovare la roba, ma poi se non ci si scanta un minimo minimo minimo (vuol dire seguire un link al posto di un altro, mica la luna...) poi nella vita che si diventa???


non voglio criticarti, anche perché dopotutto io ho recuperato senza la minima fatica il tuo codice gentilmente messo a disposizione di tutti, anzi ti ringrazio :D però non capisco cosa c'è di male nel mettere queste cose nell'area filez....cavolo è fatta apposta!!!! serve per aiutarci fra noi, e se si ragiona cosi allora tanto vale eliminarla del tutto!!!!
per fortuna c'è gente che la pensa diversamente (me compreso) e quindi quella sezione può andare avanti ed essere di aiuto a molti...e penso proprio che a progetto ultimato, se tutto andrà bene e se il progetto meriterà, lo metterò sicuramente su filez, come ho già fatto per degli appunti (anche se sinceramente non penso possano essere serviti perché non capivo manco io cosa stavo scrivendo!!!! :D .....

Teju
Mi hai quasi convinto... ho messo il link anche nell'area Filez...

andrea
Personalmente metterò il mio progetto a disposizione ma solo a partire dal prossimo appello. Per questo l'ho dato esclusivamente a una persona che ha fatto un lavoraccio durante tutto il corso postando gli appunti, e mi sembrava il modo giusto per ricambiare. Siccome il progetto controllo remoto è molto simile all'ultimo e siccome la mia implementazione è un pò particolare (benchè corretta e credo anche efficiente), ho voluto evitarvi problemi con il prof che magari pensa che abbiate copiato. Sapete, c'è sempre qualcuno che non si sforza neppure di copiare i nome. Chi non crede a quanto sto dicendo, potrà verificare non appena posterò. E' stata una scelta abbastanza dolorosa perchè mi spiace non aver aiutato coloro che stanno dando l'esame adesso, tenendo conto che l'esame è effettivamente complicato. Ma credetemi, è una scelta ponderata.

mattcobain
senza che mi metta a quotare sia andrea, sia teju (dopo il cambio di decisione ;) )
solo una cosa: :approved:

:ciao:

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