Advertisement
Perlamado

Untitled

Mar 23rd, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. // esame 19.09.2019
  2. // file1.txt
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <math.h>
  8.  
  9. struct dati {
  10. int ora;
  11. int battiti;
  12. int Fmin;
  13. int Fmax;
  14. int Fmedia;
  15. int besv;
  16. int sonno;
  17. int pasto;
  18. int corsa;
  19. int sintomi;
  20. };
  21.  
  22. struct dati *letturaFile(FILE *f,int *n);
  23. void stampaStructDati(struct dati *d,int n);
  24. int numeroBesvTotali(struct dati *d,int n);
  25. int tempoBesvTest(struct dati *d,int n);
  26. int frequenzaMinima(struct dati *d,int n);
  27. int frequenzaMassima(struct dati *d,int n);
  28. int frequenzaMedia(struct dati *d,int n);
  29. int sintomiSonno(struct dati *d,int n);
  30. int durataSonno(struct dati *d,int n,int *inizio,int *fine);
  31. int oraBradicardia( struct dati *d,int n,int fmin);
  32. int oraTachicardia( struct dati *d,int n);
  33.  
  34. int main( int argc, char *argv[]){
  35. int n,besv,oraBesv,fmin,fmax,fmedia,numSintomi,sonno,inizio,fine,oraBradi,oraTachi;
  36. struct dati *dati;
  37. FILE*f;
  38.  
  39. if(argc!=2){
  40. printf("parametri inseriti errati\n");
  41. return 1;
  42. }
  43. f=fopen(argv[1],"r");
  44. if(f==NULL){
  45. printf("file non trovato\n");
  46. return 1;
  47. }
  48. //funzione lettura e stampa struct dati
  49. dati=letturaFile(f,&n);
  50. fclose(f);
  51. stampaStructDati(dati,n);
  52. // richiesta 1
  53. besv=numeroBesvTotali(dati,n);
  54. oraBesv=tempoBesvTest(dati,n);
  55. printf("[TOTALI]\n%d\n%d\n",oraBesv,besv);
  56. //richiesta 2
  57. fmin=frequenzaMinima(dati,n);
  58. fmax=frequenzaMassima(dati, n);
  59. fmedia=frequenzaMedia(dati,n);
  60. printf("[FREQUENZA]\n%d\n%d\n%d\n",fmin,fmax,fmedia);
  61. //richiesta 3
  62. numSintomi=sintomiSonno(dati, n);
  63. printf("[SINTOMI]\n%d\n",numSintomi);
  64. //richiesta 4
  65. sonno=durataSonno(dati,n,&inizio,&fine);
  66. printf("[SONNO]\n%d\n%d\n%d\n",inizio,fine,sonno);
  67. //richiesta 5ΓΉ
  68. oraBradi=oraBradicardia(dati,n,fmin);
  69. oraTachi=oraTachicardia(dati,n);
  70. printf("[BATTITI]\n%d\n%d\n",oraBradi,oraTachi);
  71. return 0;
  72. }
  73. struct dati *letturaFile(FILE *f,int *n){
  74. int nConv;
  75. int size=10;
  76. char buffer[100];
  77. char s[5];
  78. struct dati *d1,*d2;
  79. *n=0;
  80.  
  81. d2=malloc(size*sizeof(struct dati));
  82. while(fgets(buffer,sizeof(buffer),f)){
  83. d1=d2 +*n;
  84. nConv=sscanf(buffer,"%d\t%d\t%d\t%d\t%d\t%d\t%s",&d1->ora,&d1->battiti,&d1->Fmin,&d1->Fmax,&d1->Fmedia,&d1->besv,s);
  85. if(s[0]=='S'){
  86. d1->sonno=1;
  87. }else{
  88. d1->sonno=0;
  89. }
  90. if(s[1]=='P'){
  91. d1->pasto=1;
  92. }else{
  93. d1->pasto=0;
  94. }
  95. if(s[2]=='C'){
  96. d1->corsa=1;
  97. }else{
  98. d1->corsa=0;
  99. }
  100. if(s[3]=='D'){
  101. d1->sintomi=1;
  102. }else{
  103. d1->sintomi=0;
  104. }
  105. (*n)++;
  106. if(*n>size){
  107. size=size*2;
  108. d2=realloc(d2,size*sizeof(struct dati));
  109. }
  110. }
  111. d2=realloc(d2,(*n)*sizeof(struct dati));
  112. return d2;
  113. }
  114. void stampaStructDati(struct dati *d,int n){
  115. int i;
  116. for(i=0;i<n;i++){
  117. printf("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",d[i].ora,d[i].battiti,d[i].Fmin,d[i].Fmax,d[i].Fmedia,d[i].besv,d[i].sonno,d[i].pasto,d[i].corsa,d[i].sintomi);
  118. }
  119. }
  120. int numeroBesvTotali(struct dati *d,int n){
  121. int i;
  122. int count=0;
  123. for(i=0;i<n;i++){
  124. count+=d[i].besv;
  125. }
  126. return count;
  127. }
  128. int tempoBesvTest(struct dati *d,int n){
  129. int ora=0;
  130. ora+=d[n-1].ora-d[0].ora;
  131. return ora;
  132. }
  133. int frequenzaMinima(struct dati *d,int n){
  134. int i;
  135. int min=100;
  136. for(i=0;i<n;i++){
  137. if(d[i].Fmin<min){
  138. min=d[i].Fmin;
  139. }
  140. }
  141. return min;
  142. }
  143. int frequenzaMassima(struct dati *d,int n){
  144. int i;
  145. int max=0;
  146. for(i=0;i<n;i++){
  147. if(d[i].Fmax>max){
  148. max=d[i].Fmax;
  149. }
  150. }
  151. return max;
  152. }
  153. int frequenzaMedia(struct dati *d,int n){
  154. int i;
  155. int count=0;
  156. int media=0;
  157. for(i=0;i<n;i++){
  158. count+=d[i].Fmedia;
  159. }
  160. media=count/n;
  161. return media;
  162. }
  163. int sintomiSonno(struct dati *d,int n){
  164. int i;
  165. int count=0;
  166. for(i=0;i<n;i++){
  167. if(d[i].sonno==1 && d[i].sintomi==1){
  168. count++;
  169. }
  170. }
  171. return count;
  172. }
  173. int durataSonno(struct dati *d,int n,int *inizio,int *fine){
  174.  
  175. int i;
  176. int countI;
  177. int countF;
  178. int count =0;
  179. for(i=0;i<n;i++){
  180. if(d[i].sonno==1 ){
  181. *fine=d[i].ora;
  182. if(countI==0){
  183. *inizio=d[i].ora;
  184. countI=1;
  185. }
  186. if(countF==0){
  187. count++;
  188. countF=1;
  189. }
  190. }else{
  191. countF=0;
  192. }
  193. }
  194. return count;
  195. }
  196. int oraBradicardia( struct dati *d,int n,int fmin){
  197.  
  198. int i,ora;
  199. int min=100;
  200. //int v[n];
  201.  
  202. /*for(i=0;i<n;i++){
  203. v[i]=0;
  204. }*/
  205. for(i=0;i<n;i++){
  206. if(fmin<min) {
  207. ora=d[i].ora;
  208. }
  209.  
  210. }
  211. return ora;
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement