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