Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef struct{
- int elemento;
- int citta[3];
- int valore;
- }rileva;
- typedef struct{
- int elemento;
- int valSoglia;
- char tipo[6];
- }elemento;
- void insertRil();
- void insertElem();
- void printRil();
- void printElem();
- void valMedio();
- void dimSoglia();
- int main()
- {
- int scelta=1;
- while(scelta<7 && scelta!=0)
- {
- printf("1)Inserisci Rilevazione\n2)Stampa Rilevazioni\n3)Stampa valori elementi\n4)Inserisci Elemento\n5)Valore medio rilevazioni\n6)Diminuisci soglia\n\n Scelta:");
- scanf("%d", &scelta);
- fflush(stdin);
- switch (scelta){
- case 1:{
- insertRil();
- break;
- }
- case 2:{
- printRil();
- break;
- }
- case 3:{
- printElem();
- break;
- }
- case 4:{
- insertElem();
- break;
- }
- case 5:
- {
- valMedio();
- }
- case 6:
- {
- dimSoglia();
- }
- }
- }
- getchar();
- return 0;
- }
- void insertRil()
- {
- FILE *fp;
- fp=fopen("rileva.dat","wb");
- rileva r;
- int numElem;
- int i;
- printf("Digita il numero di rilevazioni che vuoi inserire\n");
- scanf("%d", &numElem);
- fflush(stdin);
- for(i=0;i<numElem;i++)
- {
- printf("Digita il numero dell elemento\n");
- scanf("%d", &r.elemento);
- fflush(stdin);
- printf("Digita la citta\n");
- scanf("%s", r.citta);
- fflush(stdin);
- printf("Digita il valore rilevato\n\n");
- scanf("%d", &r.valore);
- fflush(stdin);
- fwrite(&r,sizeof(rileva),1,fp);
- }
- printRil();
- }
- void printRil()
- {
- FILE *fp;
- fp=fopen("rileva.dat","rb");
- rileva r;
- while(fread(&r,sizeof(rileva),1,fp))
- {
- printf("%d %s %d \n", r.elemento, r.citta, r.valore);
- }
- }
- void insertElem()
- {
- FILE *fp;
- fp=fopen("elemento.dat","wb");
- elemento e;
- int numElem;
- int i;
- printf("Digita il numero di elementi che vuoi inserire\n");
- scanf("%d", &numElem);
- fflush(stdin);
- for(i=0;i<numElem;i++)
- {
- printf("Digita il numero dell elemento\n");
- scanf("%d", &e.elemento);
- fflush(stdin);
- printf("Digita il suo valore di soglia\n");
- scanf("%d", &e.valSoglia);
- fflush(stdin);
- printf("Digita il suo tipo\n\n");
- scanf("%s", e.tipo);
- fflush(stdin);
- fwrite(&e,sizeof(elemento),1,fp);
- }
- printElem();
- }
- void printElem()
- {
- FILE *fp;
- fp=fopen("elemento.dat","rb");
- elemento e;
- while(fread(&e,sizeof(elemento),1,fp))
- {
- printf("%d %d %s \n", e.elemento, e.valSoglia, e.tipo);
- }
- }
- void valMedio()
- {
- FILE *el,*ri;
- el=fopen("elemento.dat", "rb");
- ri=fopen("rileva.dat", "rb");
- int media=0;
- int count=0;
- rileva r;
- elemento e;
- while(fread(&e,sizeof(elemento),1,el))
- {
- if(!strcmp(e.tipo,"GAS13"))
- {
- while(fread(&r,sizeof(rileva),1,ri))
- {
- if(r.elemento==e.elemento)
- {
- media=media+r.valore;
- count++;
- }
- }
- printf("%d %d %f \n", e.elemento,e.valSoglia,(float) media/count);
- }
- }
- }
- void dimSoglia()
- {
- FILE *el,*ri;
- el=fopen("elemento.dat", "r+b");
- ri=fopen("rileva.dat", "rb");
- rileva r;
- elemento e;
- int flag=1;
- while(fread(&r,sizeof(rileva),1,ri))
- {
- fread(&e, sizeof(elemento),1,el);
- while(flag)
- {
- if(r.valore>e.valSoglia)
- {
- flag=0;
- fseek(el,-1l*sizeof(elemento),SEEK_CUR);
- e.valSoglia--;
- fwrite(&e,sizeof(elemento),1,el);
- }
- fread(&e, sizeof(elemento),1,el);
- }
- rewind(el);
- }
- printElem();
- }
Add Comment
Please, Sign In to add comment