Esercizio su funzioni e struttura

di il
3 risposte

Esercizio su funzioni e struttura

Salve a tutti,
L'esercizio chiede,a partire da questa struttura
 struct Articolo 
{ 
       char categoria; 
       char nome[MAXL]; 
       float costo; 
       int numConf; 
}; 
struct ScorteMagazzino 
{ 
       Articolo scorte[MAXNUM]; 
       int numAr; 
}
di scrivere una funzione:
void ordina(ScorteMagazzino* s)
potete spiegarmi i passaggi della soluzione,specialmente cosa fanno i due cicli for?
void ordina(ScorteMagazzino* s)
{   int ordinato=0;
    for(int i=0;i<s->numAr-1 && !ordinato;i++)
    {   ordinato=1;
        for(int j=s->numAr-1;j>=i+1;j--)
                if((s->scorte[j].categoria<s->scorte[j-1].categoria)||
                   (s->scorte[j].categoria==s->scorte[j-1].categoria 
                   && strcmp(s->scorte[j].nome,s->scorte[j-1].nome)<0))
                {      scambia(s->scorte,j,j-1);
                       ordinato=0;
                }
Vi ringrazio.

3 Risposte

  • Re: Esercizio su funzioni e struttura

    Quello che vedi è semplicemente l'ordinamento a bolle...il primo for quello con indice i serve per fissare la cima del vettore mentre il secondo con indice j serve per scorrerti il vettore dalla fine fino ad i fà i vari scambi confrontando i vari elementi e si ferma solo quando arriva ad i così l'elemento più leggero sale alla cima successivamente la i aumenta quindi se prima valeva 0 adesso vale 1 e riparte il secondo for che usa la stessa logica di prima e farà salire in posizione 1 l'elemento più leggero e così via come puoi immaginare dopo la fine del for di indice i il vettore sarà ordinato è chiaro il concetto oppure mi sono espresso male?
  • Re: Esercizio su funzioni e struttura

    Sei stato chiarissimo... Grazie infinite...
    si tratta dunque di una "bubble sort"? è possibile stabilire in quali casi è più conveniente usare questo algoritmo di ordinamento?
  • Re: Esercizio su funzioni e struttura

    Beh diciamo che l'ordinamento a bolle non è uno dei migliori algoritmi visto che fà circa n^2 /2 controlli e n^2 /2 scambi nel caso peggiore come puoi vedere e capire stesso a parità di macchina l'argoritmo dell ordinamento a bolle non è molto efficiente, serve più che altro a uso didattico/scolastico per far entrare i futuri programmatori nell'ottica degli algoritmi....spero di essere stato chiaro se hai problemi chiedi pure...
Devi accedere o registrarti per scrivere nel forum
3 risposte