Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16

    [c++]Non riesco a ordinare un array!

    ciao raga,
    dovrei trovare il modo di ordinare un array, ma non di ottenere un array coi valori ordinati, bensi un array che contenga degli indici, in ordine, degli elementi del primo array dal piu' grande al piu' piccolo...
    ho provato cosi ma.....ottengo tutti numeri uguali!
    per favore aiutatemi! ci sto combattendo da 1 giorno!

    double max_availability;
    int saved_j=0;
    int sorted_index[6];

    for (int i=0; i<6;i++){

    if (sorted_index[i]!=saved_j){

    for (int j=0; j<n_nodi[0];j++)
    {
    max_availability=availability[0][saved_j];

    if ((availability[0][j]>max_availability)&&(saved_j!=j))
    {
    max_availability=availability[0][j];
    saved_j= j;
    sorted_index[i]=saved_j;


    }


    }
    sorted_index[i]=saved_j;


    }


    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16
    e esempio:

    array{23,1,56};

    sorted index{2,0,1}

    qualche idea?
    grazie!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    Ciao.
    Devo dire che ho provato a capire cosa stai cercando di ottenere, ma non sono proprio riuscito a intendere molto. Potresti spiegarti meglio, magari corredando il tutto con un esempio completo?

  4. #4
    Originariamente inviato da lion2684
    e esempio:

    array{23,1,56};

    sorted index{2,0,1}

    qualche idea?
    grazie!!
    Il tuo esempio non aiuta a capire cosa vuoi ottenere :master:

    Avrebbe più senso cosi :
    array{23,1,56};
    sorted index{1,0,2};
    Altrimenti prova a spiegarti meglio.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Io ho capito che vuoi fare una cosa del genere:

    1. array{23,1,56};
    2. sorted array{1, 23, 56}
    3. sorted index{1,0,2}

    Vuoi scrivere gli indici del primo array, invece dei numeri, in ordine del secondo array ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    Ciao,
    Io userei una struttura, il primo elemento è il valore e il secondo il suo indice.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 15
    
    typedef struct vettore {  
            int elemento;
            int indice;
            } VET;
    
    int main()
    {
        VET w[MAX],temp;
        int i,j;
        
        for (i=0;i<MAX;i++)                 // carico un vettore random
        {    w[i].elemento=rand()%100+1;
             w[i].indice=i;
           }
        
        for (i=MAX-1; i>0; i--)            // ordino vettore
          for(j=0; j<i; j++)
             if ( w[j].elemento < w[j+1].elemento )
             {    
                  temp=w[j];
                  w[j]=w[j+1];
                  w[j+1]=temp;
                  }
        
         // stampa di prova
    
         for (i=0;i<MAX;i++)
             printf("Valore-> %d , Indice-> %d \n",w[i].elemento,w[i].indice); 
             
         system("PAUSE");
    }
    La funzione di ordinamento è un bubble sort, non molto efficiente per molti elementi, però l'dea è questa.

    Ciao.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.