Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Questo Programma Calcola il Consumo di vari dispositivi , esporta il file in un file di testo
- // visualizza la lista di dispositivi presenti nel file o elimina dati dal file.
- #include <stdio.h>
- struct Dispositivo{ // typedef struct dispositivo Disp;
- char nome[10];
- int watt;
- long double TotaleNetto;
- long double Totale;
- struct Dispositivo *nextPtr;
- };
- typedef struct Dispositivo TipoDispositivo; //viene ridefinito "struct Dispositivo" come TipoDispositivo
- typedef TipoDispositivo *DispPtr; //viene definito un tipo puntatore "TipoDispositivo *"
- void menu (void);
- int nuovofile (FILE *, TipoDispositivo *, int);
- //void stampadispositivi (void);
- //void eliminadato (void);
- void calcolaconsumo(TipoDispositivo *);
- int main(){
- FILE *ListDevPtr;
- TipoDispositivo *DispoPtr; //TipoDispositivo *DispoPtr
- TipoDispositivo Device;
- int scelta;
- DispoPtr = &Device; //*DispoPtr= *&Device = Device
- do {
- menu();
- scelta = getchar();
- switch (scelta){
- case '1' :
- scelta = nuovofile(ListDevPtr,DispoPtr,scelta); //&Device
- break;
- case '2' :
- //stampadispositivi();
- break;
- case '3' :
- //eliminadato();
- break;
- default : printf("Scelta non corretta");
- }
- }
- while (scelta =!0);
- return 0;
- }
- void menu (void) {
- printf("-----Menù-----\nInserire un numero per determinare l'azione da intraprendere\n");
- printf("1)Salva un dato nel file prestabilito\n2)Stampa lista dei dispositivi e dei dati\n3)Elimina registro\n");}
- int nuovofile (FILE *DevPtr, TipoDispositivo *Dispo,int scelta) { //*&Device
- int nuovodispositivo;
- if (( DevPtr = fopen("ListaDispositivi.txt", "w+")) == NULL){
- printf("Il file non può essere aperto");}
- else{
- while ( nuovodispositivo != 2){
- printf("Inserisci l'identificativo del Dispositivo, 0 per tornare al menu\n");
- scanf("%s", (*Dispo).nome);
- printf ("Nome Dispositivo: %s\n", (*Dispo).nome);
- if ((*Dispo).nome == 0){ //Device.nome
- menu ();
- scanf("%d", &scelta);
- return scelta;
- }
- else{
- calcolaconsumo(Dispo); //&*Dispo=&Device
- fwrite(Dispo,sizeof(TipoDispositivo),1,DevPtr); //&*Dispo=&Device
- }
- printf ("Vuoi aggiungere un'altro dispositivo?\n1 per si\n2 per no\n");
- scanf("%s", nuovodispositivo);
- }
- }
- fclose(DevPtr);
- }
- void calcolaconsumo (TipoDispositivo *DevicePtr){ //*&Device
- float QFV = 0.0819672131;
- float QFD = -0.0369603825;
- float QEF1 = 0.09702;
- float QEF2 = 0.08631;
- float DF1 = 0.01154;
- float DF2 = 0.01154;
- float DV = 0;
- float pereq = -0.00065 ;
- float QPOT = 0.0154090164 * 3;
- float QFR = 0.0163934426;
- float QVR = 0;
- float IEC = 0.0227;
- int wattaggio;
- float kwh;
- int anno = 365;
- int oref1;
- int oref2;
- int ore;
- float Totale;
- float TotQFV;
- float TotQF;
- float TotQE;
- float TotQEF1;
- float TotQEF2;
- float TotRete;
- float TotImposte;
- printf("Inserire in Watt il consumo del dispositivo da misurare -1 per uscire \n>");
- scanf("%d", &wattaggio );
- printf("Inserire il monte ore in fascia F1 di attività del dispositivo\n>");
- scanf("%d", &oref1);
- printf("Inserire il monte ore in fascia F2 di attività del dispositivo\n>");
- scanf("%d", &oref2);
- ore = oref1 + oref2;
- kwh = (float) wattaggio / 1000;
- TotQFV= (QFV + QFD) * anno;
- TotQEF1 = (QEF1+DF1)* kwh * anno * oref1;
- TotQEF2 = (QEF2+DF2)* kwh * anno * oref2;
- TotQE= ((DV + pereq) * kwh * anno * ore) + TotQEF1 + TotQEF2;
- TotRete= (QFR + QVR + QPOT) * anno;
- TotImposte = IEC * anno;
- TotQF= TotQFV + TotRete ;
- Totale = TotQF + TotQE + TotImposte;
- printf( "Ecco quanto consuma il dispositivo annualmente\n\n");
- printf ("Totale Consumo : %f kwh/anno\n", kwh * anno * ore);
- printf("Totale Quota Energia :%f euro/anno\n", TotQE);
- printf("Totale Quota Fissa :%f euro/anno\n", TotQF);
- printf("Totale Imposte :%f euro/anno\n", TotImposte);
- printf("Totale Imposte Rete :%f euro/anno\n", TotRete);
- printf ("Totale imposte comprese : %f euro/anno \n\n" ,Totale);
- (*DevicePtr).watt = wattaggio; //Device.watt ecc
- DevicePtr->Totale = Totale; //Device.Totale con operatore freccia
- (*DevicePtr).TotaleNetto = Totale - TotImposte;
- }
Advertisement
Add Comment
Please, Sign In to add comment