[C] Ordinamento bubble sort con struct?

di il
7 risposte

[C] Ordinamento bubble sort con struct?

Ciao ragazzi come diventa un ordinamento bubble sort con l'uso della struct? Grazie mille

7 Risposte

  • Re: [C] Ordinamento bubble sort con struct?

    Ovvero?
  • Re: [C] Ordinamento bubble sort con struct?

    La domanda, posta cosi' non ha senso.

    Ma forse il problema e': come assegno un ordine totale ad una struct?

    Cioe', come confronto due struct in modo da assicurare un ordine totale?

    Un ordine totale dice che ci possono essere solo 3 casi in un confronto:

    a < b
    a == b
    a > b

    e non puo' mai capitare che si possa avere contemporaneamente

    a < b
    a > b

    o altre strane combinazioni.

    La soluzione e' banale:

    fai il confronto con il primo campo della struct.
    se il confronto e' ==, fai il confronto con il secondo campo, ...

    Se ottieni == per tutti i campi, allora le due strict devono essere uguali
  • Re: [C] Ordinamento bubble sort con struct?

    Il problema può essere più banale ... Magari vuole ordinare una struct di dati di una persona per età ma finché non chiarisce è inutile fare elucubrazioni ....
  • Re: [C] Ordinamento bubble sort con struct?

    oregon ha scritto:


    Magari vuole ordinare una struct di dati di una persona per età ma finché non chiarisce è inutile fare elucubrazioni ....
    Sì, anche io l'avrei intesa così. Comunque attendiamo chiarimenti...
  • Re: [C] Ordinamento bubble sort con struct?

    Se array[n] è dichiarato nella struct paperino;

    ti riferisci all' array con paperino.array, nei cicli,
    poi bisogna vedere dai casi
  • Re: [C] Ordinamento bubble sort con struct?

    Giacomo_made4core ha scritto:


    Se array[n] è dichiarato nella struct paperino;

    ti riferisci all' array con paperino.array, nei cicli,
    poi bisogna vedere dai casi

    Sì ma dobbiamo ancora capire quale sia il problema preciso. Ad esempio secondo me si riferiva all'ordinamento di tante struct in base al valore di un loro campo...

    Ovviamente senza informazioni precise non si può fare altro che sparare a caso.
  • Re: [C] Ordinamento bubble sort con struct?

    Forse questo esempio può esserti utile. E' un programma che chiede di inserire da tastiera i dati relativi agli studenti, li inserisce nella matrice che ha struttura studente ed infine li mette in ordine alfabetico( usando l'algoritmo bubble sort) prima di stampare a schermo.
    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define N 3
    #define M 40
    
    int main()
    {
        struct studente{
            char cognome[M], nome[M];
            unsigned int matricola;
            float v1, v2, v3;
        };
        
        struct studente v[N], appoggio;
        unsigned int i, pos[N], k = 0;
    
        puts("<COGNOME>    <NOME>   <MATRICOLA>  <VOTO1>  <VOTO2>  <VOTO3>");
        for(i = 0; i < N; i++){
            scanf("%s %s %d %f %f %f", v[i].cognome, v[i].nome, &v[i].matricola, &v[i].v1, &v[i].v2, &v[i].v3);
        }
    
    
        for(i = 0; i < N-1; i++){
            for( k = 0; k < (N-1)-i; k++ ){
                if( strncmp(v[k].cognome, v[k+1].cognome, M) > 0){
                    appoggio = v[k];
                    v[k] = v[k+1];
                    v[k+1] = appoggio;
                }
            }
        }
    
        puts("\nOrdine alfabetico");
        puts("<COGNOME>    <NOME>       <MATRICOLA>  <VOTO1>  <VOTO2>  <VOTO3>");
        for(i = 0; i < N; i++){
            printf("%-12s %-12s %-12d %-8.2f %-8.2f %-8.2f %-.2f\n", v[i].cognome, v[i].nome, v[i].matricola, v[i].v1, v[i].v2, v[i].v3);
        }
    
        return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte