codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
#define M 50
//Structures:
typedef struct{
char codice[M];
char tipo[M];
int durata;
char cognome_cliente[M];
char cognome_operatore[M];
int costo;
char data_prox[M];
}prestazione;
//Prototypes:
int caricaDati(prestazione[], char[]);
void valutacosto(prestazione[], int);
void stampa(prestazione[], int);
int cerca(prestazione[], int);
void cancellaPrestazione(prestazione[], int);
//Main:
int main (){
prestazione ElencoPrestazioni[MAX];
char file1[M]="prestazioni.txt";
int n_prestazioni=caricaDati(ElencoPrestazioni,file1);
printf("Totale prestazioni caricate: %d \n", n_prestazioni);
valutacosto(ElencoPrestazioni,n_prestazioni);
stampa(ElencoPrestazioni,n_prestazioni);
cancellaPrestazione(ElencoPrestazioni,n_prestazioni);
stampa(ElencoPrestazioni,n_prestazioni);
}
//Functions:
void valutacosto(prestazione ElencoPrestazioni[], int n){
int i, max=0;
for(i=0; i<n; i++){
if(ElencoPrestazioni[i].costo>ElencoPrestazioni[max].costo){
max=i;
}
}
printf("Il cliente che ha effettuato la prestazione di maggior costo e' %s. \n", ElencoPrestazioni[max].cognome_cliente);
}
int caricaDati(prestazione ElencoPrestazioni[], char file[]){
FILE *fp;
int tot=0;
int costo_max=0;
fp=fopen(file,"r");
if(fp==NULL){
printf("Errore nell'apertura del file. \n");
system ("PAUSE");
return 0;
}else{
while(!feof(fp)){
fscanf(fp,"%s",ElencoPrestazioni->codice);
fscanf(fp,"%s",ElencoPrestazioni->tipo);
fscanf(fp,"%d",&ElencoPrestazioni->durata);
fscanf(fp,"%s",ElencoPrestazioni->cognome_cliente);
fscanf(fp,"%s",ElencoPrestazioni->cognome_operatore);
fscanf(fp,"%d",&ElencoPrestazioni->costo);
fscanf(fp,"%s",ElencoPrestazioni->data_prox);
ElencoPrestazioni++;
tot++;
}
fclose(fp);
}
return tot;
}
void stampa(prestazione ElencoPrestazioni[], int n){
int i;
printf("Elenco prestazioni: \n");
for(i=0; i<n; i++){
printf("Prestazione %d: \n", i+1);
printf("Codice:%s \tTipo:%s \tDurata:%d \tCognome cliente:%s \tCognome operatore:%s \tCosto:%d \tData prossimo appuntamento:%s \n",
ElencoPrestazioni[i].codice,ElencoPrestazioni[i].tipo,ElencoPrestazioni[i].durata,ElencoPrestazioni[i].cognome_cliente,ElencoPrestazioni[i].cognome_operatore,ElencoPrestazioni[i].costo,ElencoPrestazioni[i].data_prox);
}
}
int cerca(prestazione ElencoPrestazioni[], int n){
int k;
while(k!=EOF){
if(k==n) return k;
else
k++;
return -1;
}
}
void cancellaPrestazione(prestazione ElencoPrestazioni[], int n){
int n_prestazione;
int cancellate=0;
do{
printf("Inserire un numero di prestazione: \n");
scanf("%d", &n_prestazione);
}while((n_prestazione<=0)||(n_prestazione>n));
int i;
int c=cerca(ElencoPrestazioni,n);
for(i=0; i<n; i++){
if(c>=0){
i=0;
cancellate++;
}
}
printf("Sono state cancellate %d prestazioni: \n", cancellate);
printf("Prestazione n.%d \n", n_prestazione);
}