PDA

Visualizza la versione completa : [C] Array


SergiusXP
23-09-2008, 18:19
Salve a tutti. Ho un problemone.

Come faccio ad estrarre da un array i tre valori pi alti?

Mi spiego meglio con un esempio:


lunghezza[5] = {3,6,4,8,0};

OUTPUT:

Valore al 1 posto: 8
Valore al 2 posto: 6
Valore al 3 posto: 4




GRAZIEEEE

LeleFT
23-09-2008, 18:23
Originariamente inviato da SergiusXP
Salve a tutti. Ho un problemone.

Come faccio ad estrarre da un array i tre valori pi alti?

Mi spiego meglio con un esempio:


lunghezza[5] = {3,6,4,8,0};

OUTPUT:

Valore al 1 posto: 8
Valore al 2 posto: 6
Valore al 3 posto: 4




GRAZIEEEE
Ordini l'array in ordine decrescente e prendi le prime tre posizioni...
Di algoritmi di ordinamento ne piena zeppa la rete internet: una ricerca nel forum o con google e hai risolto il problema.


Ciao. :ciauz:

SergiusXP
23-09-2008, 18:30
eh ma il problema che non posso variare la posizione degli elementi..

Quindi non posso ordinare

(a meno che non crei un array-copia e non posso)

LeleFT
23-09-2008, 18:33
Allora, se devi solo estrarre i tre pi alti, utilizza 3 variabili d'appoggio.
Scorri l'array una sola volta e ciascun elemento lo confronti con le tre variabili (con opportuni scambi).

1) Se l'elemento I maggiore di Var1 porti Var2 in Var3, Var1 in Var2 e Var1 diventa l'elemento I

altrimenti

2) Se l'elemento I maggiore di Var2 porti Var2 in Var3 e Var2 diventa l'elemento I

altrimenti

3) Se l'elemento I maggiore di Var3 metti I in Var3.

Alla fine della prima passata dell'array hai in Var1 il pi grande, Var2 il secondo e Var3 il terzo.


Ciao. :ciauz:

SergiusXP
23-09-2008, 19:02
non funzia :(

oregon
23-09-2008, 21:23
Originariamente inviato da SergiusXP
non funzia :(

Non pensi sia meglio fare vedere il codice che hai scritto?

wino_7
23-09-2008, 21:34
Originariamente inviato da SergiusXP
eh ma il problema che non posso variare la posizione degli elementi..

Quindi non posso ordinare

(a meno che non crei un array-copia e non posso)

Se non puoi cambiare la posizione degli elementi e non vuoi creare una copia del vettore per non appesantire il programma usa un vettore di puntatori !!!

marcelloma
23-09-2008, 22:36
Quoto la soluzione con le 3 variabili (posta il codice e vediamo l'errore) in quanto la complessita' e' minore rispetto all'ordinamento ( O(n) contro O(n*logn) ) quindi in pratica il programma sara' un tantino piu' veloce.

Loading