/* Paziente */
#include <stdio.h>
#include <stdlib.h>
#define N_PAZIENTI 3

typedef struct
{
   char nome[256] ;
   char cognome[256] ;
   int matricola;
   int pressione[2];   // minima e massima
   int temperature[3]; // temperature della mattina e pomeriggio e sera
   float parcella;       // in euro quello che deve al dottore 
} Paziente;     // Iniziale maiuscola

// 3. imposta una procedura (prototipo) con il corretto passaggio dei parametri
// che permetta ad un utente di inserire tutti dati di un paziente che e' stato 
// passato alla procedura;

void inserisciPaziente (Paziente *p);

// 4. imposta una procedura (prototipo) che stampa la pressione e la 
// temperatura di un paziente;

void stampaPaziente (Paziente p);

// 5. imposta una procedura (prototipo) che dato l'indirizzo dell'array clinica 
// ed il numero di pazienti che vi sono sulla lista, calcola il saldo totale 
// della clinica;

double saldoClinica (Paziente clinica[], int num_pazienti);

int main()
{
   int i;
   
   // 1. definisci una variabile rossi di tipo paziente;
   Paziente rossi;
   
   // 2. definisci un array di 20 pazienti di nome clinica e di tipo paziente;
   Paziente clinica[20];
   
   // 6. imposta tutte le chiamate nel main che realizzino in sequenza i punti 
   // precedenti;
   
   inserisciPaziente(&rossi);
   stampaPaziente(rossi);
   
   for (i=0; i<N_PAZIENTI; i++)
      inserisciPaziente(&clinica[i]);
   for (i=0; i<N_PAZIENTI; i++)
      stampaPaziente(clinica[i]);
      
   printf("\n\nIl saldo totale della clinica con %d pazienti e': %g euro", i, saldoClinica(clinica, N_PAZIENTI));
   
   fflush(stdin);
   getchar();
   return 0;
}

// 7. facoltativo: ora completa l'esercizio scrivendo il codice di tutte le procedure. 

void inserisciPaziente (Paziente *p)
{ 
   printf("\nNome:\t"); scanf("%s",p->nome);
   printf("\nCognome:\t"); scanf("%s",p->cognome);
   printf("\nMatricola:\t"); scanf("%d", &(p->matricola));
   printf("\nPressione minima:\t"); scanf("%d", &(p->pressione[0]));
   printf("\nPressione massima:\t"); scanf("%d", &(p->pressione[1]));
   printf("\nTemperatura mattina:\t"); scanf("%d", &(p->temperature[0]));
   printf("\nTemperatura pomeriggio:\t"); scanf("%d", &(p->temperature[1]));
   printf("\nTemperatura sera:\t"); scanf("%d", &(p->temperature[2])); 
   printf("\nParcella:\t"); scanf("%g", &(p->parcella));
   
}

void stampaPaziente (Paziente p)
{
   printf("\nNome:\t %s",p.nome);
   printf("\nCognome:\t %s",p.cognome);
   printf("\nMatricola:\t %d", p.matricola);
   printf("\nPressione minima:\t %d", p.pressione[0]);
   printf("\nPressione massima:\t %d", p.pressione[1]);
   printf("\nTemperatura mattina:\t %d", p.temperature[0]);
   printf("\nTemperatura pomeriggio:\t %d", p.temperature[1]);
   printf("\nTemperatura sera:\t %d", p.temperature[2]); 
   printf("\nParcella:\t %g", p.parcella);
}

double saldoClinica (Paziente clinica[], int num_pazienti)
{
   double somma;
   int i;
   for (i=0; i<num_pazienti; i++)
      somma += clinica[i].parcella;
   return somma;
}