Salve a tutti, ho un problemino nell'ordinamento in questo programma:
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;
     }
è un programma che gestisce i dipendenti di una azienda..
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