Advertisement
Perlamado

Untitled

Feb 24th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. //esame 19-09-2019
  2. //file190919.txt
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <math.h>
  8.  
  9. struct dati{
  10. int h;
  11. int battiti;
  12. int fMin;
  13. int fMax;
  14. int fMean;
  15. int besv;
  16. int sonno;
  17. int pasto;
  18. int corsa;
  19. int sintomo;
  20. };
  21.  
  22.  
  23. struct dati *letturaFile(FILE *f, int *n);
  24. void stampaStructDati(struct dati *dati,int n);
  25. int totBesvTest(struct dati *d,int n,int *oraTot);
  26.  
  27. int main(int argc, char *argv[]){
  28. FILE *f;
  29. struct dati *dati;
  30. //struct dati2 *d2;
  31. int nDati;
  32. int totBesv;
  33. int oreTot;
  34. //int nD2;
  35.  
  36. if(argc!=2){
  37. return 1;
  38. }
  39.  
  40. f=fopen(argv[1],"r");
  41.  
  42. if(f==NULL){
  43. printf("file non trovato\n");
  44. return 1;
  45. }
  46.  
  47. // funzioni per la lettura dei file
  48. dati=letturaFile(f,&nDati);
  49. stampaStructDati(dati,nDati);
  50. //richiesta 1
  51.  
  52. totBesv=totBesvTest(dati,nDati,&oreTot);
  53. //oreTot=totOreTest(dati,nDati);
  54. printf("%d\n%d\n",totBesv,oreTot);
  55.  
  56. // richiesta 2
  57. frequenzaMin=frequenzaMinima(struct dati *d,int n,int *ora);
  58.  
  59. return 0;
  60. }
  61.  
  62.  
  63. struct dati *letturaFile(FILE *f, int *n){
  64.  
  65. int nConv;
  66. int size=10;
  67. char buffer[100];
  68. char s[5];
  69. struct dati *d1,*d2;
  70. *n=0;
  71. d2=malloc(size*sizeof(struct dati));
  72. while(fgets(buffer,sizeof(buffer),f)){
  73.  
  74. d1=d2+ *n;
  75. 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);
  76. if(s[0]=='S'){
  77. d1->sonno=1;
  78. }else{
  79. d1->sonno=0;
  80. }
  81. if(s[1]=='P'){
  82. d1->pasto=1; // tutto questo per riempire le ultime 4 variabili della strcut
  83. }else{
  84. d1->pasto=0;
  85. }
  86. if(s[2]=='C'){
  87. d1->corsa=1;
  88. }else{
  89. d1->corsa=0;
  90. }
  91. if(s[3]=='D'){
  92. d1->sintomo=1;
  93. }else{
  94. d1->sintomo=0;
  95. }
  96. (*n)++;
  97. if(*n>size){
  98. size=2*size;
  99. d2=realloc(d2,size*sizeof(struct dati));
  100.  
  101. }
  102. }
  103. d2=realloc(d2,(*n)*sizeof(struct dati));
  104. return d2;
  105. }
  106.  
  107. void stampaStructDati(struct dati *dati,int n){
  108.  
  109. int i;
  110. for(i=0;i<n;i++){
  111. //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);
  112. 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);
  113. }
  114. }
  115. int totBesvTest(struct dati *d,int n,int *oreTot){
  116.  
  117. int i;
  118. int totBesv=0; // count da incrementare
  119. for(i=0;i<n;i++){
  120. totBesv+= d[i].besv;
  121.  
  122. }
  123. *oreTot=d[n-1].h-d[0].h+1;
  124. return totBesv;
  125.  
  126. }
  127.  
  128. int frequenzaMinima(struct dati *d,int n,int *ora){
  129.  
  130. int i;
  131. int frequenzaMin=100;
  132.  
  133. for(i=0;i<n;i++){
  134. if(d[i].fmin<frequenzaMin){
  135. flag=d[i].fmin;
  136. *ora=d[i].h;
  137. }
  138. }
  139. return frequenzaMin;
  140. }
  141. int frequenzaMassima(struct dati *d,int n,int *ora){
  142.  
  143. int i;
  144. int flag=0;
  145.  
  146. for(i=0;i<n;i++){
  147. if(d[i].fmax>flag){
  148. flag=d[i].fmax;
  149. *ora=d[i].h;
  150. }
  151. }
  152. return flag;
  153. }
  154.  
  155. int frequenzaMedia(struct dati *d,int n){
  156.  
  157. int i;
  158. int flag=0;
  159.  
  160. for(i=0;i<n;i++){
  161. flag= d[i].fmean +flag;
  162. }
  163.  
  164. return (int)flag/n;
  165. }
  166.  
  167. int richiesta3(struct dati *d,int n){
  168.  
  169. int i;
  170. int count=0;
  171.  
  172. for(i=0;i<n;i++){
  173.  
  174. if(d[i].listaAttivita[3]=='D'){
  175. count ++;
  176. }
  177. }
  178.  
  179. return count;
  180. }
  181.  
  182. int richiesta4(struct dati *d,int n,int *inizio,int *fine){
  183.  
  184. int i;
  185. int count=0,flag1=0,flag2=0;
  186.  
  187.  
  188. for(i=0;i<n;i++){
  189. if(d[i].listaAttivita[0]=='S'){
  190. *fine=d[i].h;
  191.  
  192. if(flag1==0){
  193. *inizio=d[i].h;
  194. flag1=1;
  195. }
  196. if(flag2==0){
  197. count++;
  198. flag2=1;
  199. }
  200. }else{
  201. flag2=0;
  202. }
  203.  
  204. }
  205. return count;
  206. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement