Bubble sort

di il
5 risposte

Bubble sort

Buongiorno, voglio fare un ordinamento di un struct con il bubble sort.

Ho questa struttura:

typedef struct{
char nome[30];
t_mese Vmesi[m];
}t_province;

t_province Vprov[p];

Faccio l'ordinamento in questo modo:
void bubblesort(t_province x[p]){
int i,j;
char *temp; //temporanea

for(i=0; i<p; i++){
for(j=0; j<p-1; j++){
if(strcmp(x[j].nome, x[j+1].nome)>0)
{
temp= x[j].nome;
x[j].nome = x[j+1].nome;
x[j+1].nome=temp;
}
}
}


Mi da questo errore: assignment to expression with array type

su queste 2 righe:

x[j].nome = x[j+1].nome;
x[j+1].nome=temp;

Come posso risolvere?

5 Risposte

  • Re: Bubble sort

    Gli array di char non si assegnano in quel modo ma si usa la funzione strcpy
  • Re: Bubble sort

    @oregon Riesci a farmi un esempio?

    Io ho fatto in questo modo, ma il programma smette di funzionare

    void bubblesort(t_province x[p]){
    int i,j;
    char *temp; //temporanea

    for(i=0; i<p; i++){
    for(j=0; j<p-1; j++){
    if(strcmp(x[j].nome, x[j+1].nome)>0)
    {
    strcpy(temp, x[j].nome);
    strcpy(x[j].nome , x[j+1].nome);
    strcpy(x[j+1].nome, temp);
    }
    }
    }


    //strcpy(temp,x.nome); //strcpy(dest,sorgente);
    //strcpy(x.nome,x[j].nome);
    //strcpy(x[j].nome,temp);



    printf("Anno 2016 Gennaio Febbraio Marzo Aprile Maggio Giugno Luglio Agosto Settembre Ottobre Novembre Dicembre\n");

    for(i=0;i<p;i++){
    printf("%s\t", x.nome);
    for(j=0; j<m; j++){
    printf(" %2.2f\t",x.Vmesi[j].mm);
    }
    printf("\n");
    }
  • Re: Bubble sort

    Ma temp non può essere un semplice puntatore. Deve essere un vettore come nome
  • Re: Bubble sort

    Ok, risolto. Grazie
  • Re: Bubble sort

    Prego, ricorda che usare un puntatore nullo o non inizializzato è un errore
Devi accedere o registrarti per scrivere nel forum
5 risposte