Newsgroup: it.comp.lang.c
Titolo: Aiutatemi, vi prego.

Scusatemi per il distrubo, ma comincio ad essere veramente disperata.
Il mio progetto prevedeva la gestione di un file ad accesso casuale e
l'ordinamento tramite heap.
Per  quanto riguarda  la prima parte credo di esserci riuscita, ma per la
seconda non so proprio dove mettere le mani.
Come si fa l'ordinamento tramite
heap?????????????????????????????????????????????????????
Per piacere aiuto!!!!!!!
Dimenticavo, la gestione dell'heap deve essere in un file separato.
Se qualcuno č cosě gentile da aiutarmi sull'heap potrebbe dirmi anche come
si compila un file del genere
(richiamo l'heap includendolo in una libreria #include "...": ?!?).
Io sto programmando con il gcc.
Grazie a chiunque decidesse di darmi una mano.

 wrote in message
news:EWQC8.27669$
CN3.8...@news2.tin.it

Per "heap", generalmente, si intende quella parte della memoria (RAM e
quindi non necessariamente su disco) che non e' utilizzata dal sistema 
e viene quindi adoperata dal programmatore per i suoi scopi.
Quindi la frase "la gestione dell'heap deve essere in un file separato"
non la comprendo perfettamente.
A meno che questa frase non voglia dire che i dati ordinati devono
essere scritti in un file separato.
In ogni caso, se quello che devi fare e' prendere i nominativi presenti
nel tuo file e ordinarli, puoi leggerli in una struttura in memoria,
usando l'allocazione dinamica (che sfrutta, appunto, l'heap) e poi
ricorrere ad un qualsiasi algoritmo di ordinamento (bubble sort, quick
sort, shell sort, ecc...), riscrivi il file secondo l'ordine e il gioco
e' fatto.  Temo, tuttavia, che tu non la veda cosi' semplice, ma devi
cercare, se vuoi venirne a capo, di tradurre il tuo problema in termini
piu' semplici: innanzitutto devi sapere che si intende per "gestione
dell'heap in un file separato".
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:50ba40f5a272899714d...@mygate.mailgate.org...
Questo dimostra quanto io sia nel pallone.
Cmq grazie.
Ciao

heap?????????????????????????????????????????????????????
Per heap intendi heapsort ?  Che io sappia nelle librerie del C viene
fornita una funzione che usa il quicksort, e in ogni caso la funzione
cosi' com'e' non puo' essere utilizzata per l'ordinamento su file.
Quella funzione prevede infatti l'ordinamento in memoria (RAM), quindi
non va bene, a meno che il file non sia di dimensioni contenute tali
da poter essere interamente caricato in RAM.
Un buon sistema potrebbe essere quello di utilizzare un algoritmo ad
inserzione, che opererebbe duplicando il file, cioe' copiando record
per record. Questa soluzione puo' essere migliorata (se le dimensioni
dei dati lo consentono) appoggiandosi su una tabella in RAM contenente
solo le chiavi ed i puntatori (numeri di record).
Se le dimensioni del file e delle "chiavi" per l'ordinamento sono
molto grandi, forse la soluzione migliore e' l'hashing.
ciao, acc.   
a...@libero.it

Io sto programmando con il gcc.
Consideriamo il caso semplice in cui siano nello stesso path.
Tu avrai:
- main.c: il file principale
- heapsort.h: l'header con il prototipo delle funzioni di heapsort.c
(e altro eventualmente)
- heaprost.c: il codice delle funzioni
Tu devi fare 2 cose:
- per ogni modulo includere l'header di tutti i moduli richiesti,
quindi se main.c richiede heaprost.c, nel main devi mettere:
#include "heapsort.h"
- linkare assieme i 2 moduli .C (lo fai semplicemente passando i file
al GCC che automaticamente compilera' i moduli e li linkera')
gcc main.c heapsort.c
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 sort.
Beh, magari grazie.
Mi hanno già mandato qsa però visto il mio livello direi che mi aiuterebbe
averne più versioni, così magari ci capisco qsa.
Grazie.
Chiara.