Salve ragazzi stavo provando a fare un proggramma che costituito da vettori di struct , organizzati come un archivio telefonico, in ogni struct dovrei inserire nome cognome età e poi ordinarli tramite il bubble sort e eseguire la ricerca...Beh ho provato a scrivere il programma fino al bubble sort ma ho diversi errori in compilazione e trovandomi di fronte a struct i problemi sono stati tanti....Posto dis eguito gli errori e dopo il codice grazie da subito!


H:\Programmi C\Esercitazione laboratorio\archivio2.c In function `scambio':

88 H:\Programmi C\Esercitazione laboratorio\archivio2.c array initialized from non-constant array expression

91 H:\Programmi C\Esercitazione laboratorio\archivio2.c incompatible types in assignment

93 H:\Programmi C\Esercitazione laboratorio\archivio2.c syntax error before "char"


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define N 2
#define M 10
struct persona {
char nome[10];
char cognome[10];
unsigned short eta;
};

struct persona vettore[N];

void flush(void);
void leggistringa(char [],unsigned long);
void riempi(void);
void stampa(void);
void scambio(char [],unsigned long , unsigned long);
void bubblesort(void);

main(){
riempi();
stampa();
bubblesort();

getchar();




}

void flush(void){
while(getchar()!='\n');
}

void leggistringa (char s[], unsigned long dim) {
int i;

for(i=0;(s[i]=getchar())!='\n'&& i<dim-1;i++);

s[i]='\0';

}

void riempi() {

unsigned long i;
for(i=0;i<N;i++) {
printf("Inserisci il nome: ");
leggistringa(vettore[i].nome, 10);



printf("Inserisci il cognome: ");
leggistringa(vettore[i].cognome, 10);



printf("Inserisci l'eta: ");
scanf("%d", &vettore[i].eta);

flush();


}
}

void stampa()
{

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

printf("\nIl nome %i e': %s", i, vettore[i].nome);

printf("\nIl cognome %i e': %s",i, vettore[i].cognome);

printf("\nL'eta' %i e': %d",i, vettore[i].eta);
}
}

void scambio(char s[], unsigned long i, unsigned long j){


char temp [10]= vettore[i].cognome;


vettore[i].cognome=vettore[j].cognome;

vettore[j].cognome=char temp[M];
}
void bubblesort(){

int ordinato;
unsigned long dim;
unsigned long i,j;
ordinato=0;

for(j=0;j<dim-1 &&!ordinato;j++){
ordinato=1;
for(i=dim-1;i>j;i--) if(vettore[i].cognome<vettore[i-1].cognome){
scambio(vettore[i].cognome,i,i-1);
ordinato=0;
printf("\n vettore ordinato %s",vettore[i].cognome);

};
}