codice:
#include <stdio.h> #include <windows.h> #include <stdlib.h> #include <string.h> #define MAX 100 typedef struct { char nome[21]; char cognome[21]; char fiscale[17]; char indirizzo[50]; // via ... float cFine_TriAttu; // lettura del contatore alla fine del trimestre attuale (metri cubi) float cFine_TriPrec; // lettura del contatore alla fine del trimestre precedente (metri cubi) float boll_Npag; // importo di eventuali bollette precedenti non pagate } Utente; void bolletta(Utente v[],int n); int main() { Utente tab[MAX]; FILE *fp; int i=0,l,n=0; system("cls"); if((fp=fopen("Trimestre.bin","rb"))==NULL) { printf("Devi prima creare un file TRIMESTRE.bin"); exit(1); } fread(&tab[0],sizeof(Utente),1,fp); while(!feof) { i++; l=i; fread(&tab[i],sizeof(Utente),1,fp); } fclose(fp); bolletta(tab,l); system("pause"); system("cls"); } void bolletta(Utente v[],int n) { FILE *f; char appo[51]; int i,j,mora=10; float tot,var; gotoXY(32,4); printf("|"); gotoXY(1,4); printf("|"); for(j=0; j<30; j++) { printf("%c",219); Sleep(150); } for(i=0; i<n; i++) { // for per creare bolletta per ogni utente strcpy(appo,v[i].fiscale); strcat(appo,".txt"); if(( f=fopen(appo,"w"))==NULL) { printf("\n\n ERRORE"); exit(1); } fprintf(f,"Nome: %s\n",v[i].nome); fprintf(f,"Codice Fiscale: %s\n",v[i].fiscale); fprintf(f,"Indirizzo: %s\n",v[i].indirizzo); fprintf(f,"Importo bollette precedenti: %f\n",v[i].boll_Npag); if(v[i].boll_Npag!=0) { fprintf(f,"mora: %d\n",mora); } fprintf(f,"Consumi Perioro (mc): %f\n",v[i].cFine_TriAttu); fprintf(f,"Quota fissa: %d\n",15); var=(2.5*v[i].cFine_TriAttu); fprintf(f,"Quota variabile: %f\n",var); if(v[i].boll_Npag!=0) { tot=10+var+15+v[i].boll_Npag; fprintf(f,"Totale da pagare: %f\n",tot); } else { tot=(2.5*v[i].cFine_TriAttu)+15; fprintf(f,"Totale da pagare: %4.f\n",tot); } fclose(f); } printf("\n\nBollette Pronte!!"); system("pause"); } void gotoXY(int x, int y) { COORD CursorPos = {x, y}; HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsole, CursorPos); }