Guest User

Untitled

a guest
Apr 24th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.71 KB | None | 0 0
  1. #include <stdio.h>
  2. typedef struct{
  3.     int elemento;
  4.     int citta[3];
  5.     int valore;
  6. }rileva;
  7.  
  8. typedef struct{
  9.     int elemento;
  10.     int valSoglia;
  11.     char tipo[6];
  12. }elemento;
  13.  
  14. void insertRil();
  15. void insertElem();
  16. void printRil();
  17. void printElem();
  18. void valMedio();
  19. void dimSoglia();
  20.  
  21. int main()
  22. {
  23.     int scelta=1;
  24.  
  25.    
  26.         while(scelta<7 && scelta!=0)
  27.         {
  28.             printf("1)Inserisci Rilevazione\n2)Stampa Rilevazioni\n3)Stampa valori elementi\n4)Inserisci Elemento\n5)Valore medio rilevazioni\n6)Diminuisci soglia\n\n Scelta:");
  29.             scanf("%d", &scelta);
  30.             fflush(stdin);
  31.             switch (scelta){
  32.                         case 1:{   
  33.                                 insertRil();       
  34.                                 break;
  35.                                }
  36.                         case 2:{
  37.                                 printRil();
  38.                                 break;
  39.                                }
  40.                         case 3:{
  41.                                 printElem();
  42.                                 break;
  43.                                }
  44.                         case 4:{
  45.                                 insertElem();
  46.                                 break;
  47.                                }
  48.                         case 5:
  49.                             {
  50.                                 valMedio();
  51.                             }
  52.                         case 6:
  53.                             {
  54.                                 dimSoglia();
  55.                             }
  56.                           }
  57.        }
  58.     getchar();
  59.     return 0;
  60. }
  61.  
  62. void insertRil()
  63. {
  64.     FILE *fp;
  65.     fp=fopen("rileva.dat","wb");
  66.     rileva r;
  67.     int numElem;
  68.     int i;
  69.    
  70.         printf("Digita il numero di rilevazioni che vuoi inserire\n");
  71.         scanf("%d", &numElem);
  72.         fflush(stdin);
  73.        
  74.         for(i=0;i<numElem;i++)
  75.         {
  76.             printf("Digita il numero dell elemento\n");
  77.             scanf("%d", &r.elemento);
  78.             fflush(stdin);
  79.             printf("Digita la citta\n");
  80.             scanf("%s", r.citta);
  81.             fflush(stdin);
  82.             printf("Digita il valore rilevato\n\n");
  83.             scanf("%d", &r.valore);
  84.             fflush(stdin);
  85.             fwrite(&r,sizeof(rileva),1,fp);
  86.         }
  87.         printRil();
  88. }
  89.  
  90. void printRil()
  91. {
  92.     FILE *fp;
  93.     fp=fopen("rileva.dat","rb");
  94.     rileva r;
  95.    
  96.         while(fread(&r,sizeof(rileva),1,fp))
  97.         {
  98.             printf("%d %s %d \n", r.elemento, r.citta, r.valore);
  99.         }
  100. }
  101.  
  102. void insertElem()
  103. {
  104.     FILE *fp;
  105.     fp=fopen("elemento.dat","wb");
  106.     elemento e;
  107.     int numElem;
  108.     int i;
  109.    
  110.         printf("Digita il numero di elementi che vuoi inserire\n");
  111.         scanf("%d", &numElem);
  112.         fflush(stdin);
  113.        
  114.         for(i=0;i<numElem;i++)
  115.         {
  116.             printf("Digita il numero dell elemento\n");
  117.             scanf("%d", &e.elemento);
  118.             fflush(stdin);
  119.             printf("Digita il suo valore di soglia\n");
  120.             scanf("%d", &e.valSoglia);
  121.             fflush(stdin);
  122.             printf("Digita il suo tipo\n\n");
  123.             scanf("%s", e.tipo);
  124.             fflush(stdin);
  125.             fwrite(&e,sizeof(elemento),1,fp);
  126.         }
  127.         printElem();
  128. }
  129.  
  130. void printElem()
  131. {
  132.     FILE *fp;
  133.     fp=fopen("elemento.dat","rb");
  134.     elemento e;
  135.    
  136.         while(fread(&e,sizeof(elemento),1,fp))
  137.         {
  138.             printf("%d  %d %s \n", e.elemento, e.valSoglia, e.tipo);
  139.         }  
  140. }
  141.  
  142. void valMedio()
  143. {
  144.     FILE *el,*ri;
  145.     el=fopen("elemento.dat", "rb");
  146.     ri=fopen("rileva.dat", "rb");
  147.     int media=0;
  148.     int count=0;
  149.     rileva r;
  150.     elemento e;
  151.    
  152.         while(fread(&e,sizeof(elemento),1,el))
  153.         {
  154.             if(!strcmp(e.tipo,"GAS13"))
  155.                 {
  156.                     while(fread(&r,sizeof(rileva),1,ri))
  157.                     {
  158.                         if(r.elemento==e.elemento)
  159.                         {
  160.                             media=media+r.valore;
  161.                             count++;
  162.                         }
  163.                     }
  164.                     printf("%d %d %f \n", e.elemento,e.valSoglia,(float) media/count);
  165.                 }
  166.         }
  167. }
  168.  
  169. void dimSoglia()                                                                                                                                                                                                                                                                                                       
  170. {
  171.     FILE *el,*ri;
  172.     el=fopen("elemento.dat", "r+b");
  173.     ri=fopen("rileva.dat", "rb");
  174.     rileva r;
  175.     elemento e;
  176.     int flag=1;
  177.    
  178.     while(fread(&r,sizeof(rileva),1,ri))
  179.     {
  180.         fread(&e, sizeof(elemento),1,el);
  181.         while(flag)
  182.         {
  183.             if(r.valore>e.valSoglia)
  184.             {
  185.                 flag=0;
  186.                 fseek(el,-1l*sizeof(elemento),SEEK_CUR);
  187.                 e.valSoglia--;
  188.                 fwrite(&e,sizeof(elemento),1,el);
  189.             }
  190.             fread(&e, sizeof(elemento),1,el);
  191.         }
  192.         rewind(el);
  193.     }
  194.     printElem();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  195. }
Add Comment
Please, Sign In to add comment