|
|
|
![]() |
|
Strumenti |
![]() |
#41 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
|
![]() |
![]() |
![]() |
#42 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
In tal caso usa fgets per leggere una riga intera, poi usa sscanf per leggere i valori dalla riga fino a quando non ti torna 0. |
|
![]() |
![]() |
![]() |
#43 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dovrebbe funzionare, ma:
Codice:
while((scanf("%d",&cifra)) != '\0') Codice:
while((scanf("%d",&cifra)) != 0) ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#44 | ||
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
esatto. Per ora sto usando la scanf ed avendo provato con almeno 10000 valori in input credo che funzioni. ciao e grazie Quote:
direi che ci siamo. Un'altra dritta: ho l'albero RB popolato ed uso la funzione inorder per visualizzare il suo contenuto ordinato per chiave. I campi riferiti ad ogni nodo sono: A, B, C, D, E quando uso la inorder mi viene mostrato quindi l'albero riordinato per A; se necessitassi di riordinare per C ad esempio vale la pena ricostruirsi un nuovo albero usando C come chiave e quindi usare inorder per visualizzare l'albero ordinato per C oppure ci sono metodi più ingegnosi ? ciao |
||
![]() |
![]() |
![]() |
#45 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
A questo ti avevo già risposto in prima pagina:
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#46 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
ciao,
scusa ma sono proprio fuso, non ricordavo più di averlo già chiesto. Volevo evitare di aggiungere ulteriore codice e magari sfruttare la inorder esistente. E se creassi un albero temporaneo solo con la chiave che mi serve riordindare mettendo a zero gli altri campi e poi sfruttando la inorder, riodinerei l'output dell'albero temporaneo usandolo però come argomento di input per la RBsearch, così facendo verrebbe troppo costoso ? ciao |
![]() |
![]() |
![]() |
#47 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dovrebbe venire ugualmente O(n·log(n)), se ho capito bene cosa intendi fare.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#48 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
è un'idea per continuare a sfruttare sempre la stessa struttura
ciao |
![]() |
![]() |
![]() |
#49 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
ciao,
l'idea l'ho implementata e funziona correttamente. Ho un dubbio quando si cancella un nodo sia esso nero oppure rosso che se non ricordo va rimesso tutto com'era niente, sto ripassando un pò la teoria ![]() Ultima modifica di misterx : 03-06-2010 alle 17:25. |
![]() |
![]() |
![]() |
#50 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
ciao,
è possibile con una qualche tecnica dopo aver memorizzato area e posizione di rettangoli in un albero RB conoscere se tali aree si sovrappongono ? grazie |
![]() |
![]() |
![]() |
#51 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A che ti serve memorizzare area e posizione di un rettangolo in un albero RB ? Cioè...quale ordinamento attui ?
|
![]() |
![]() |
![]() |
#52 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
onestamente non lo so, è un'idea che mi è venuta osservando il mondo dei database dove fai unione o intersezione di dati. Ho pensato che chi si occupa di grafica, magari ha escogitato un qualche modo per intersecare aree in un qualche modo che non conosco e magari attraverso gli RB che trovo molto prestanti. Il link su wikipedia li presenta come strutture dati adatte per il real time. ciao |
|
![]() |
![]() |
![]() |
#53 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
La misura di questi rettangoli è in interi o float ? Di quanti rettangoli si parla ? Hanno dei limiti di coordinate ? Quando ti servono i risultati ? Ogni volta che aggiungi un rettangolo o solo alla fine dell'elaborazione ?
Ultima modifica di cionci : 04-06-2010 alle 08:13. |
![]() |
![]() |
![]() |
#54 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
dev'essere fatto in tempo reale |
|
![]() |
![]() |
![]() |
#55 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il fatto che debba essere fatto in tempo reale ancora non mi dice niente
![]() Se deve essere fatto in tempo reale, quale dead line hai ? Quanti rettangoli possono essere aggiunti all'inizio di ogni periodo (uno, cento, mille, oppure vengono eliminati tutti e ricreati tutti). All'inizio dell'elaborazione, quando ti si presentano i primi rettangoli hai un tempo di compensazione ? |
![]() |
![]() |
![]() |
#56 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
Quote:
forse sono andato un pò fuori strada, meglio se ci penso ancora un pochino. Ho un'altra domanda: come duplico un albero RB ? ciao |
|
![]() |
![]() |
![]() |
#57 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Potresti fare una sorta di visita in cui replichi ogni informazione del nodo in questione in un nuovo nodo radice, associando poi al sottoalbero sinistro e destro la chiamata ricorsiva dell'algoritmo stesso. Al termine avresti un duplicato dell'albero su cui hai invocato la funzione, non dovrebbe essere difficile scriverla.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#58 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
ciao e grazie
sto leggendo da stdin con while((scanf("%d",&carattere)) != 0) ma al termine vorrei rileggere una seconda volta la stringa passata come si riavvolge l'input ? ciao |
![]() |
![]() |
![]() |
#59 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non si riavvolge...
|
![]() |
![]() |
![]() |
#60 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
È uno stream: le letture a buon fine lo svuotano di ciò che è stato letto, quindi non puoi fare ciò che vuoi. Leggi una riga per volta in un buffer dinamico e opera su quello.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:44.