Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //esame 19-09-2019
- //file190919.txt
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- struct dati{
- int h;
- int battiti;
- int fMin;
- int fMax;
- int fMean;
- int besv;
- int sonno;
- int pasto;
- int corsa;
- int sintomo;
- };
- struct dati *letturaFile(FILE *f, int *n);
- void stampaStructDati(struct dati *dati,int n);
- int totBesvTest(struct dati *d,int n,int *oraTot);
- int main(int argc, char *argv[]){
- FILE *f;
- struct dati *dati;
- //struct dati2 *d2;
- int nDati;
- int totBesv;
- int oreTot;
- //int nD2;
- if(argc!=2){
- return 1;
- }
- f=fopen(argv[1],"r");
- if(f==NULL){
- printf("file non trovato\n");
- return 1;
- }
- // funzioni per la lettura dei file
- dati=letturaFile(f,&nDati);
- stampaStructDati(dati,nDati);
- //richiesta 1
- totBesv=totBesvTest(dati,nDati,&oreTot);
- printf("%d\n%d\n",totBesv,oreTot);
- return 0;
- }
- struct dati *letturaFile(FILE *f, int *n){
- int nConv;
- int size=10;
- char buffer[100];
- char s[5];
- struct dati *d1,*d2;
- *n=0;
- d2=malloc(size*sizeof(struct dati));
- while(fgets(buffer,sizeof(buffer),f)){
- d1=d2+ *n;
- nConv=sscanf(buffer,"%d\t%d\t%d\t%d\t%d\t%d\t%s",&d1->h,&d1->battiti,&d1->fMin,&d1->fMax,&d1->fMean,&d1->besv,s);
- if(s[0]=='S'){
- d1->sonno=1;
- }else{
- d1->sonno=0;
- }
- if(s[1]=='P'){
- d1->pasto=1; // tutto questo per riempire le ultime 4 variabili della strcut
- }else{
- d1->pasto=0;
- }
- if(s[2]=='C'){
- d1->corsa=1;
- }else{
- d1->corsa=0;
- }
- if(s[3]=='D'){
- d1->sintomo=1;
- }else{
- d1->sintomo=0;
- }
- (*n)++;
- if(*n>size){
- size=2*size;
- d2=realloc(d2,size*sizeof(struct dati));
- }
- }
- d2=realloc(d2,(*n)*sizeof(struct dati));
- return d2;
- }
- void stampaStructDati(struct dati *dati,int n){
- int i;
- for(i=0;i<n;i++){
- //printf("%d\t%d\t%d\t%d\t%d\t%d\t%s\n",dati[i].h,dati[i].battiti,dati[i].fMin,dati[i].fMax,dati[i].fMean,dati[i].besv,dati[i].listaAttivita);
- printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",dati[i].h,dati[i].battiti,dati[i].fMin,dati[i].fMax,dati[i].fMean,dati[i].besv,dati[i].sonno,dati[i].pasto,dati[i].corsa,dati[i].sintomo);
- }
- }
- int totBesvTest(struct dati *d,int n,int *oreTot){
- int i;
- int totBesv=0; // count da incrementare
- for(i=0;i<n;i++){
- totBesv+= d[i].besv;
- }
- *oreTot=d[n-1].h-d[0].h+1;
- return totBesv;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement