Salve a tutti, ho un problemino nell'ordinamento in questo programma:
è un programma che gestisce i dipendenti di una azienda..codice:#include <stdio.h>#include <stdlib.h> #include <string.h> #define MAX 5 typedef struct recDipendenti { char Cognome[MAX][10]; char Nome[MAX][10]; int Nascita; char Pos_aziendale; int Stipendio; }t_Dipendenti; t_Dipendenti dipendenti[MAX]; int j; int i; void visualmenu(); void scelta(int *N); void gestione(int N); void lettura_anagrafica(); void visualrecord(); void ordina_cognome(); void scambio(); void ordina_data(); void ordina_stipendio(); /*Programma Principale*/ int main() { int N; do{ visualmenu(); scelta(&N); gestione(N); system("PAUSE"); system("cls"); }while(N!=5); system("PAUSE"); return(0); } /*Procedure:*/ void visualmenu(){ printf("\t\t\t MENU \n\n\n"); printf("\t 1 - Lettura anagrafica \n"); printf("\t 2 - Ordinamento e visualizzazione per cognome \n"); printf("\t 3 - Ordinamento e visualizzazione per data di nascita \n"); printf("\t 4 - Ordinamento e visualizzazione per stipendio \n"); printf("\t 5 - Exit \n"); return; } void scelta(int *N){ printf("\n\tInserisci scelta: "); scanf("%d",N); return; } void gestione(int N){ switch(N){ case 1: lettura_anagrafica(); break; case 2: ordina_cognome(); visualrecord(); break; case 3: ordina_data(); visualrecord(); break; case 4: ordina_stipendio(); visualrecord(); break; } return; } void lettura_anagrafica(){ for(i=0;i<MAX;i++){ printf("\t\t\tDipendente:%d \n\n",i+1); printf("\n\tCognome dipendente: "); scanf("%s",&dipendenti[i].Cognome); printf("\n\tNome dipendente: "); scanf("%s",&dipendenti[i].Nome); printf("\n\tData di nascita dipendente: "); scanf("%d",&dipendenti[i].Nascita); printf("\n\tPosizione aziendale dipendente: "); scanf("%s",&dipendenti[i].Pos_aziendale); printf("\n\tStipendio dipendente: "); scanf("%d",&dipendenti[i].Stipendio); fflush(stdin); system("cls"); } return; } void visualrecord(){ for(i=0;i<MAX;i++){ printf("\n\n\t\tDipendente: %d ",i+1); printf("\n\tCognome dipendente: %s",dipendenti[i].Cognome); printf("\n\tNome dipendente: %s",dipendenti[i].Nome); printf("\n\tData di nascita: %d",dipendenti[i].Nascita); printf("\n\tPosizione aziendale: %s",dipendenti[i].Pos_aziendale); printf("\n\tStipendio dipendente: %d",dipendenti[i].Stipendio); } return; } void ordina_cognome(){ for(i=0;i<=MAX;i++) { for(j=0;j<=MAX-1;j++) if(dipendenti[j].Cognome[0][0]>dipendenti[j+1].Cognome[0][0]) { scambio(); } } return; } void scambio(){ char string[10]; int app; strcpy(string,dipendenti[j].Cognome); strcpy(dipendenti[j].Cognome,dipendenti[j+1].Cognome); strcpy(dipendenti[j+1].Cognome,string); strcpy(string,dipendenti[j].Nome); strcpy(dipendenti[j].Nome,dipendenti[j+1].Nome); strcpy(dipendenti[j+1].Nome,string); app = dipendenti[j].Nascita; dipendendi[j].Nascita = dipendenti[j+1].Nascita; dipendenti[j+1].Nascita = app; app = dipendenti[j].Stipendio; dipendendi[j].Stipendio = dipendenti[j+1].Stipendio; dipendenti[j+1].Stipendio = app; strcpy(string,dipendenti[j].Pos_aziendale); strcpy(dipendenti[j].Pos_aziendale,dipendenti[j+1].Pos_aziendale); strcpy(dipendenti[j+1].Pos_aziendale,string); return; } void ordina_data(){ for(i=0;i<=MAX;i++) { for(j=0;j<=MAX-1;j++) if(dipendenti[j].Nascita>dipendenti[j+1].Nascita) { scambio(); } } return; } void ordina_stipendio(){ for(i=0;i<=MAX;i++) { for(j=0;j<=MAX-1;j++) if(dipendenti[j].Stipendio>dipendenti[j+1].Stipendio) { scambio(); } } return; }
riscontro dei problemi del tipo:
cannot convert `char (*)[10]' to `char*' for argument `1' to `char* strcpy(char*, const char*)
invalid conversion from `char' to `char*'
initializing argument 1 of `char* strcpy(char*, const char*)'
nella procedura scambio
non ho usato il passaggio di parametri dei record

Rispondi quotando
