Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C] Array

  1. #1

    [C] Array

    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

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: [C] Array

    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    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)

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da SergiusXP
    non funzia
    Non pensi sia meglio fare vedere il codice che hai scritto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di wino_7
    Registrato dal
    Dec 2006
    Messaggi
    537
    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 !!!

  8. #8
    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.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.