Guest User

Energia

a guest
Jun 15th, 2013
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.50 KB | None | 0 0
  1. //  Questo Programma Calcola il Consumo di vari dispositivi , esporta il file in un file di testo
  2. //  visualizza la lista di dispositivi presenti nel file  o elimina dati dal file.
  3.  
  4. #include <stdio.h>
  5.  
  6. struct Dispositivo{     // typedef struct dispositivo Disp;
  7.     char nome[10];
  8.     int watt;
  9.     long double TotaleNetto;
  10.     long double Totale;
  11.     struct Dispositivo *nextPtr;
  12. };
  13.  
  14. typedef struct Dispositivo TipoDispositivo; //viene ridefinito "struct Dispositivo" come TipoDispositivo
  15. typedef TipoDispositivo *DispPtr;  //viene definito un tipo puntatore "TipoDispositivo *"
  16.  
  17. void menu (void);
  18. int nuovofile (FILE *, TipoDispositivo *, int);
  19. //void stampadispositivi (void);
  20. //void eliminadato (void);
  21. void calcolaconsumo(TipoDispositivo *);
  22.  
  23.  
  24. int main(){
  25.  
  26. FILE *ListDevPtr;
  27. TipoDispositivo *DispoPtr; //TipoDispositivo *DispoPtr
  28. TipoDispositivo Device;
  29. int scelta;
  30. DispoPtr = &Device;    //*DispoPtr= *&Device = Device
  31.  
  32.  
  33. do {
  34. menu();
  35. scelta = getchar();
  36. switch (scelta){
  37.  
  38.     case '1' :
  39.     scelta = nuovofile(ListDevPtr,DispoPtr,scelta); //&Device
  40.     break;
  41.     case '2' :
  42.     //stampadispositivi();
  43.     break;
  44.     case '3' :
  45.     //eliminadato();
  46.     break;
  47.     default : printf("Scelta non corretta");
  48.           }
  49. }
  50.  while (scelta =!0);
  51.  
  52. return 0;
  53.  
  54. }
  55.  
  56. void menu (void) {
  57.  
  58. printf("-----Menù-----\nInserire un numero per determinare l'azione da intraprendere\n");
  59. printf("1)Salva un dato nel file prestabilito\n2)Stampa lista dei dispositivi e dei dati\n3)Elimina registro\n");}
  60.  
  61. int nuovofile (FILE *DevPtr, TipoDispositivo *Dispo,int scelta) { //*&Device
  62.  
  63. int nuovodispositivo;
  64.  
  65.   if (( DevPtr = fopen("ListaDispositivi.txt", "w+")) == NULL){
  66.      printf("Il file non può essere aperto");}
  67.      else{
  68.            while ( nuovodispositivo != 2){
  69.            printf("Inserisci l'identificativo del Dispositivo, 0 per tornare al menu\n");
  70.            scanf("%s", (*Dispo).nome);
  71.            printf ("Nome Dispositivo: %s\n", (*Dispo).nome);
  72.    
  73.            if ((*Dispo).nome == 0){  //Device.nome
  74.                      menu ();
  75.                      scanf("%d", &scelta);
  76.                      return scelta;
  77.                      }
  78.            else{
  79.                 calcolaconsumo(Dispo);  //&*Dispo=&Device
  80.                 fwrite(Dispo,sizeof(TipoDispositivo),1,DevPtr);    //&*Dispo=&Device
  81.                 }
  82.            printf ("Vuoi aggiungere un'altro dispositivo?\n1 per si\n2 per no\n");
  83.            scanf("%s", nuovodispositivo);
  84.            }
  85.                
  86.   }
  87.   fclose(DevPtr);
  88. }
  89.  
  90. void calcolaconsumo (TipoDispositivo *DevicePtr){                  //*&Device
  91.  
  92. float QFV = 0.0819672131;
  93. float QFD = -0.0369603825;
  94. float QEF1 = 0.09702;
  95. float QEF2 = 0.08631;
  96. float DF1 = 0.01154;
  97. float DF2 = 0.01154;
  98. float DV = 0;
  99. float pereq = -0.00065 ;
  100. float QPOT = 0.0154090164 * 3;
  101. float QFR = 0.0163934426;
  102. float QVR = 0;
  103. float IEC = 0.0227;
  104. int wattaggio;
  105. float kwh;
  106. int anno = 365;
  107. int oref1;
  108. int oref2;
  109. int ore;
  110. float Totale;
  111. float TotQFV;
  112. float TotQF;
  113. float TotQE;
  114. float TotQEF1;
  115. float TotQEF2;
  116. float TotRete;
  117. float TotImposte;
  118.  
  119.  
  120. printf("Inserire in Watt il consumo del dispositivo da misurare -1 per uscire \n>");
  121. scanf("%d", &wattaggio );
  122.  
  123.       printf("Inserire il monte ore in fascia F1 di attività  del dispositivo\n>");
  124.       scanf("%d", &oref1);
  125.       printf("Inserire il monte ore in fascia F2 di attività  del dispositivo\n>");
  126.       scanf("%d", &oref2);
  127.  
  128.       ore = oref1 + oref2;
  129.  
  130.            
  131.       kwh = (float) wattaggio / 1000;
  132.       TotQFV= (QFV + QFD) * anno;
  133.             TotQEF1 = (QEF1+DF1)* kwh * anno * oref1;
  134.       TotQEF2 = (QEF2+DF2)* kwh * anno * oref2;
  135.       TotQE= ((DV + pereq) * kwh * anno * ore) + TotQEF1 + TotQEF2;
  136.       TotRete= (QFR + QVR + QPOT) * anno;
  137.       TotImposte = IEC * anno;
  138.       TotQF= TotQFV + TotRete ;
  139.       Totale = TotQF + TotQE + TotImposte;
  140.  
  141.             printf( "Ecco quanto consuma il dispositivo annualmente\n\n");
  142.             printf ("Totale Consumo : %f kwh/anno\n", kwh * anno * ore);
  143.             printf("Totale Quota Energia :%f euro/anno\n", TotQE);
  144.             printf("Totale Quota Fissa :%f euro/anno\n", TotQF);
  145.             printf("Totale Imposte :%f euro/anno\n", TotImposte);
  146.             printf("Totale Imposte Rete :%f euro/anno\n", TotRete);
  147.             printf ("Totale imposte comprese : %f euro/anno \n\n" ,Totale);
  148.            
  149.             (*DevicePtr).watt = wattaggio;   //Device.watt ecc
  150.             DevicePtr->Totale = Totale;      //Device.Totale con operatore freccia
  151.             (*DevicePtr).TotaleNetto = Totale - TotImposte;          
  152. }
Advertisement
Add Comment
Please, Sign In to add comment