Quote Originariamente inviata da oregon Visualizza il messaggio
Ma le strutture dati che hai usato, il codice che hai impostato, dove stanno? Una mano si può dare ma si deve capire su cosa e come darla ...

In altri thrad non hai neanche risposto dopo il primo aiuto ...
Oddio, non avevo visto di aver ricevuto risposte! Chiedo scusa! Comunque ecco:
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);
}