Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-04-2010, 16:07   #1
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
[C] Ordinamento e accesso random

Ho 1 problema e una domanda da porre,
come si può accedere a dati in modo random in un file per porli in una lista,ho un txt contenente
es
111
aaa
bbb
222
ccc
ddd
333
ttt
hhhh
555
yyy
iiii

ad esempio si vuole che il random prenda valori a caso ,come si fa a "mandarlo a capo" nella ricerca ,nel senso,come si fa a fargli capire di prendere i valori (sono in terzine,codice,nome e cognome)

domanda,miglior algoritmo ordinamento per lista linkata?

Grazie in ancitipo
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 16:38   #2
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
Quote:
Originariamente inviato da gabmac2 Guarda i messaggi
ad esempio si vuole che il random prenda valori a caso ,come si fa a "mandarlo a capo" nella ricerca ,nel senso,come si fa a fargli capire di prendere i valori (sono in terzine,codice,nome e cognome)

EEEEH ?!

per l'ordinamento di algoritmi ce n'è a bizzeffe
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 16:43   #3
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
si,ok,ma per creare un archivio qual' è il miglior tipo di lista ,linkata,doppiamente linkata ,circolare.....?e su questo tipo di lista qual' è il miglior ordinamento ?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 20:14   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Bisogna vedere bene cosa vuoi fare, cmq in genere un'ottima struttura dati è un albero binario di ricerca, consente la ricerca in O(log N).

In pratica ogni nodo X dell'albero ha un figlio sinistro e uno destro, nel figlio sinistro in genere si pone l'elemento minore di X, mentre nel figlio destro l'elemento maggiore o uguale a X (se vuoi memorizzare doppioni).

Uno dei problemi con questa struttura è che l'albero può essere sbilanciato tutto da un lato e degenerare nel caso pessimo in una lista collegata (ricerca in O(N) in tal caso), per ovviare a questo si adotta il bilanciamento automatico, che non è immediato da implementare (vedi alberi AVL).
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 20:56   #5
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
grazie,avrei però bisogno di ordinare in loco e come lista per un piccolo archivio,va bene la linkata?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 21:57   #6
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Quote:
Originariamente inviato da gabmac2 Guarda i messaggi
grazie,avrei però bisogno di ordinare in loco e come lista per un piccolo archivio,va bene la linkata?
Se spieghi meglio cosa vorresti fare forse riusciamo a darti un aiuto più mirato.

In ogni caso l'ordinamento in genere è finalizzato alla ricerca, e una struttura come un albero binario se mantenuta opportunamente bilanciata ti garantisce prestazioni superiori senza ricorrere ad un continuo ordinamento dei dati (l'ordinamento viene imposto direttamente all'inserimento dei dati).

Se il fine è la ricerca dei dati allora ti consiglio di usare un albero binario.

Tanto per la cronaca i principali DBMS fanno uso di strutture ad albero.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 22:26   #7
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
grazie! ok,ma io devo (per esercizio) creare in una lista (come voglio) ,ed effettuare ricerche e l' ordinamento (con quello che voglio),non posso usare db
Da qui le domande per entrambe le cose,andrei su linkata e quicksort,confermate?

Per l' altra domanda come posso fare a posizionarmi su una riga i-esima di un file txt (accedendo con read) ,dove questa riga sia multipla di 3? (seek?)

Grazie in anticipo!
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2010, 23:00   #8
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Quote:
Originariamente inviato da gabmac2 Guarda i messaggi
grazie! ok,ma io devo (per esercizio) creare in una lista (come voglio) ,ed effettuare ricerche e l' ordinamento (con quello che voglio),non posso usare db
Da qui le domande per entrambe le cose,andrei su linkata e quicksort,confermate?

Per l' altra domanda come posso fare a posizionarmi su una riga i-esima di un file txt (accedendo con read) ,dove questa riga sia multipla di 3? (seek?)

Grazie in anticipo!
Ah ecco se era un'esercizio potevi dirlo prima ,cmq non ho mai detto che devi usare un DB, ho detto che le strutture ad albero proprio per la loro efficienza sono usate nei DB.

Detto ciò una lista doppiamente linkata (che quindi ha anche riferimento al predecessore) la vedo meglio.

Puoi andare di quicksort, però non ho mai implementato algoritmi di ordinamento su strutture diverse dagli array, ci potrebbero essere delle difficoltà dovute al fatto che non puoi accedere in maniera diretta agli elementi della lista ma devi usare un iteratore.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 00:14   #9
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Con lsesk puoi posizionarti in un punto qualsiasi del file! Dai uno sguardo qui http://www.manpagez.com/man/2/lseek/

Comunque per un algoritmo di ordinamento devi sempre definire un (non ricordo bene il nome ma te lo chiamo così) comparatore!
Ad esempio per i numeri un comparatore ti dice che 1 è minore di 2 oppure che 1 è uguale a 1! Per elementi diversi dai numeri devi definirlo tu! Ad esempio per un ordinamento lessicografico "pippa" viene prima di "pippo" (che esempiaccio gagliardo eh)!
Comunque come Java anche il C ha già la funzione di quick sort e anche di merge sort, e addirittura anche di heap sort .... http://www.manpagez.com/man/3/qsort/
devi solo implementare il comparatore...
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 09:03   #10
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Se non erro quelle funzioni vanno bene solo per gli array, e non ad esempio per le liste collegate.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 09:33   #11
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Se non erro quelle funzioni vanno bene solo per gli array, e non ad esempio per le liste collegate.
A non ne ho idea però se c'era una cavia che voleva ammazzarsi un po per provare
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 09:47   #12
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
grazie ragazzi,allora ,al momento però penso partirò con una linkata semplice e quicksort,eventualmente poi approfondirò con la doppiamente linkata

per lseek come faccio a portarmi ad esempio alla quarta riga?

lseek(file, 4, SEEK_SET); ?

Grazie!

Ultima modifica di gabmac2 : 14-04-2010 alle 10:13.
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 10:34   #13
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Quote:
Originariamente inviato da gabmac2 Guarda i messaggi
grazie ragazzi,allora ,al momento però penso partirò con una linkata semplice e quicksort,eventualmente poi approfondirò con la doppiamente linkata

per lseek come faccio a portarmi ad esempio alla quarta riga?

lseek(file, 4, SEEK_SET); ?

Grazie!
tutto dipende dal terzo parametro... comunque ricorda che l'offset parte da zero quindi se sei all'inizio la quarta è 3
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 13:30   #14
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12936
Edit.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 19:34   #15
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
grazie,ma allora cosa devo scrivere per andare alla terza riga?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 20:11   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
E' probabile che ti convenga leggere prima tutta le righe, e poi sceglierle a caso
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 20:32   #17
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
ad esempio vorrei generare un numero es 6 e andare al sesto record,come posso fare?
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 20:45   #18
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Carichi tutte le stringhe in una lista o un array, e poi vai a prendere il sesto elemento...

Possibile pseudocodice per il C
1. conto quante righe ci sono
2. Creo un array di tante righe
3. rileggo il file, memorizzando ciascuna riga nel posto giusto
4. inizio a tirare i valori a caso e restituisco ogni volta il record corrispondente.

In C#, che mi piace tanto ma tanto ma tanto di piu', sarebbe

Codice:
string[] data = File.ReadAllLines(@"C:\temp\mioFile.dat");
Random rnd=new Random();
string primoDato = data[rnd.Next(data.Length)];
Non ho invece capito a cosa ti servirebbe l'ordinamento.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 14-04-2010 alle 20:49.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 20:51   #19
gabmac2
Senior Member
 
Iscritto dal: Jun 2009
Messaggi: 5585
grazie,è l' idea che avevo avuto io,ma devo assolutamente andare sul file come ho scritto (è il testo del problema),come posso fare?Penso si possa accedere a un iesima riga
gabmac2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2010, 21:53   #20
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Puoi andare di quicksort, però non ho mai implementato algoritmi di ordinamento su strutture diverse dagli array, ci potrebbero essere delle difficoltà dovute al fatto che non puoi accedere in maniera diretta agli elementi della lista ma devi usare un iteratore.
In realtà (in particolare per il quicksort) non comporta grosse difficoltà. Tempo fa aveva implementato proprio il quicksort su una lista doppiamente collegata, magari lo ripesco e lo posto qua.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
Intel Xeon 600, le nuove CPU per le work...
Tesla, è ufficiale: i Robotaxi fa...
DeepL sempre più evoluto: arriva ...
Un vecchio assegno venduto a 4.800 volte...
Portatili Dell 16 in offerta su Amazon: ...
Amazfit punta ancora più in alto:...
Deep tech e venture capital: ScaleUp Lab...
GWM ha creato un font specifico per i di...
Oro rosa e charm Les Néréi...
La XPeng P7+ è salpata in direzio...
Quali sono i componenti più affid...
Amazon Haul raddoppia lo sconto: -30% su...
Germania e Danimarca accelerano sull'eol...
Azienda cinese che chiede aiuto ad una a...
Per aumentare la competitività ne...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v