Ciao Marco,
ho un po' modificato il tuo codice, credo c'erano un po' di errori concettuali. Il seguente dovrebbe soddisfare le specifiche da te richieste, ovviamente è facilmente midificabile ed adattabile, mi sono attenuto al tuo algoritmo.
Ciao.
/*SCRIVERE UN PORGR PER LA GESTIONE DI UNA TABELLA DEI PAZIENTI DI UN MEDICO. PER OGNI CARDIOLOGO:
NOME, COGNOME, CF, DATA DI NASCITA, ETA', PATOLOGIA(FEBBRE, TUBERCOLOSI, NESSUNA PATOLOGIA), DATA ULTIMA VISITA.
IN OUTPUT:
- LA TABELLA AGGIORNATA;
-PER OGNI PATOLOGIA IL NUMERO DI PAZIENTI;
-IL PAZIENTE CHE NON VEDE DA PIU TEMPO;
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 100
typedef struct {
char nome[20];
char cognome[20];
char CF[20];
char patologia[20];
int data_nascita;
int eta;
int ultima_visita;
}PAZIENTE;
int INSERIMENTO_DATI(PAZIENTE paziente[],int num_paz);
void OPERAZIONE_STAMPA(PAZIENTE paziente[],int num_paz);
void STAMPA_ULTVISITA();
int main ()
{
PAZIENTE paz[max], t;
int i, num_paz;
int paz_feb, paz_tub, paz_nex;
int j;
char febbre[]="febbre";
char tubercolosi[]="tubercolosi";
int esito = 0;
printf("inserisci il numero di pazienti--->");
scanf("%d", &num_paz);
printf("\n il numero inserito è: %d \n\n",num_paz);
esito = INSERIMENTO_DATI(paz,num_paz);
if (esito>0)
printf("\n inseriti %d pazienti \n\n",num_paz);
else{
printf("\n la INSERIMENTO_DATI ha dato errore o non vi sono pazienti \n\n");
return 0;
}
/* visualizzare il numero di pazienti per ogni patologia*/
paz_feb=0;
paz_tub=0;
paz_nex=0;
for(i=0; i<num_paz; i++)
{
if (strcmp(paz.patologia,"febbre")==0)
{
++paz_feb;
}
else if (strcmp(paz.patologia,"tubercolosi")==0)
{
++paz_tub;
}
else
{
++paz_nex;
}
}
printf("FEBBRE: %d\nTUBERCOLOSI: %d\nNESSUNA: %d\n\n", paz_feb, paz_tub, paz_nex);
/*stampare a video il paziente che non vede da piu tempo*/
for (i=0; i<num_paz; ++i)
{
for(j=i+1; j<num_paz; ++j)
{
if (paz[j].ultima_visita < paz.ultima_visita)
{
printf(" paz[j].ultima_visita = %d paz.ultima_visita = %d \n", paz[j].ultima_visita, paz.ultima_visita);
t=paz[j];
paz[j]=paz;
paz=t;
}
}
}
printf("\n\n");
//STAMPA_ULTVISITA();
//system ("pause");
//system ("cls");
/*stampare la tabella*/
OPERAZIONE_STAMPA(paz,num_paz);
system ("pause");
return 0;
}
/* funzioni e procedure*/
int INSERIMENTO_DATI(PAZIENTE paziente[],int num_paz) {
int i;
int s=0;
char stringa[20];
//PAZIENTE t[num_paz];
for (i=0; i<num_paz; i++)
{
printf("\ninserisci i dati del %d paziente\n",i+1);
printf("NOME-->");
scanf("%s", &stringa);
strcpy(paziente.nome,stringa);
strcpy(stringa,"");
printf("COGNOME--->");
scanf("%s", &stringa);
strcpy(paziente.cognome,stringa);
strcpy(stringa,"");
printf("CODICE FISCALE--->");
scanf("%s", &stringa);
strcpy(paziente.CF,stringa);
strcpy(stringa,"");
printf("PATOLOGIA--->");
scanf("%s", &stringa);
strcpy(paziente[i].patologia,stringa);
strcpy(stringa,"");
printf("DATA DI NASCITA-->");
scanf("%d", &paziente[i].data_nascita);
printf("ETA' DEL PAZIENTE-->");
scanf("%d", &paziente[i].eta);
printf("DATA ULTIMA VISITA-->");
scanf("%d", &paziente[i].ultima_visita);
//system("cls");
s=i+1;
}
//paziente = &t[0];
return s;
}
void OPERAZIONE_STAMPA (PAZIENTE paziente[],int num_paz)
{
int i;
for (i=0; i<num_paz; ++i)
{
printf(" i dati del %d paziente sono:\n", i+1);
printf("NOME--> %s\n", paziente[i].nome);
printf("COGNOME--> %s\n", paziente[i].cognome);
printf("CODICE FISCALE--> %s\n", paziente[i].CF);
printf("PATOLOGIA--> %s\n", paziente[i].patologia);
printf("DATA DI NASCITA--> %d\n", paziente[i].data_nascita);
printf("ETA DEL PAZIENTE--> %d\n", paziente[i].eta);
printf("DATA ULTIMA VISITA--> %d\n\n\n", paziente[i].ultima_visita);
}
}
void STAMPA_ULTVISITA(){
PAZIENTE paz;
int i;
for (i=0; i<1; ++i){
printf("\nNOME--> %s\n", paz.nome);
printf("\nCOGNOME--> %s\n", paz.cognome);
printf("\nCODICE FISCALE--> %s\n", paz.CF);
printf("\nPATOLOGIA--> %s\n", paz.patologia);
printf("\nDATA DI NASCITA--> %d\n", paz.data_nascita);
printf("\nETA DEL PAZIENTE--> %d\n", paz.eta);
printf("\nDATA ULTIMA VISITA--> %d\n", paz.ultima_visita);
}
}