PDA

Visualizza la versione completa : [C] Sfruttare gli indici nell'uso degli array


bikerinside
18-02-2011, 11:00
Buongiorno a tutti, avrei bisogno di sapere come poter sfruttare gli indici di un array per poter usare nel mio programma, vi spiego meglio :

int array_uno[10], array_due[10];

supponiamo che in array_uno sia un array non ordinato dove sono dei memorizzati degli interi, e in array_due ci sono gli interi di array_uno però ordinati in modo decrescente.

il mio ostacolo è che non riesco ad ordinare gli indici in modo che seguano i loro interi, spiego meglio supponiamo che sia una classifica non ordinata in array_uno e array_due questi risultati sono memorizzati in modo ordinato decrescente, come posso farsì che
gli indici seguano i prorpi interi in modo da non assegnare quell'intero ad un altro indice ?

spero di essere stato chiaro, vi ringrazio infinitamente per l'aiuto.

lolide
18-02-2011, 11:13
Veramente, almeno io, non ho capito molto :stordita:

Se potessi fare un esempio concreto credo aiuterebbe :)

bikerinside
18-02-2011, 11:22
questo è l'array uno non ordinato.

array_uno[1] = 9

array_uno[2] = 3

array_uno[3] = 5

array_uno[4] = 2


questo è l'array ordinato

array_due[1] = 9

array_due[3] = 5

array_due[2] = 3

array_due[4] = 2

in sintesi cambiano le posizioni degli array in base all'intero dell'indice, spero di essere stato chiaro. grazie infinitamente!.

lolide
18-02-2011, 11:48
Originariamente inviato da bikerinside
questo è l'array uno non ordinato.

array_uno[1] = 9

array_uno[2] = 3

array_uno[3] = 5

array_uno[4] = 2


questo è l'array ordinato

array_due[1] = 9

array_due[3] = 5

array_due[2] = 3

array_due[4] = 2

in sintesi cambiano le posizioni degli array in base all'intero dell'indice, spero di essere stato chiaro. grazie infinitamente!.

Uhm ... intanto non succede proprio così.
Cioè se tu ordini normalmente un array (controllando se l'array nella posizione dopo sia maggiore), non è che cambi l'indice, cambia il valore nell'array a quell'indice, quindi l'array ordinato risulterebbe così (l'indice parte da 0 non da 1):


array_due[0] = 2

array_due[1] = 3

array_due[2] = 5

array_due[3] = 9

valia
18-02-2011, 11:49
che io sappia non puoi cambiare la posizione degli indici a piacimento: se non ricordo male, un array in C occupa un'area di memoria contigua, di cui tu hai il puntatore al primo elemento. Per cui se vuoi arrivare al secondo elemento, o fai array[1] oppure

array + n

dove n indica la posizione di interesse.
Capisci bene che in questo caso la modifica dell'indice non è possibile (verrebbe meno la gestione).
questo è possibile farlo con una linked queue, in cui ogni elemento ha anhce il puntatore al successivo (quindi cambi solo il puntatore)

bikerinside
18-02-2011, 11:55
grazie infinitamente, ora vi spiego cosa voglio fare, es :

marco, paolo, mario.

mario - 4

paolo - 6

marco - 1

io voglio ordinare la classifica in modo decrescente in questo modo :

paolo - 6

mario - 4

marco - 1

come posso implementare questa cosa in C ?, non mi viene nulla di sensato :(

grazie davvero, siete unici.

valia
18-02-2011, 12:01
è un ordinamento, quale è il contenuto dell'array? Una stringa (array di char)?
Devi avere chiaro che gli array ha tutti gli elementi in sequenza, quindi ordinarli significa "scambiare" gli elementi, cioè mettere nell'elemento 0 l'elemento 10 ad esempio.
Ci sono una marea di esempi di ordinamento in rete

bikerinside
18-02-2011, 12:04
quindi in sintesi devo scambiare i nomi e i punteggi giusto ? e così ottengo la mia bella

classifica ordinata in modo decrescente ?

valia
18-02-2011, 12:06
cosa contiene l'array? una stringa? una struct? cosa?
il discorso non cambia, devi ordinare secondo i tuoi criteri, ma la logica di fondo non cambia in base al contenuto

bikerinside
18-02-2011, 12:12
è una struct che contiene un array di puntatori e poi ogni campo ha il suo punteggio esempio

squadra[0].nome_squadra = "italia";

squadra[0].puteggio = 30;

e così via...

Loading