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);
};
}