Advertisement
Perlamado

Untitled

Feb 5th, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.93 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. /*struct dati2{
  22. int h;
  23. int battiti;
  24. int fMin;
  25. int fMax;
  26. int fMean;
  27. int besv;
  28. char listaAttivita[10];
  29. };*/
  30.  
  31. struct dati *letturaFile(FILE *f, int *n);
  32. void stampaStructDati(struct dati *dati,int n);
  33. int totBesvTest(struct dati *d,int n,int *oraTot);
  34. //int totOreTest(struct dati *d,int n);
  35.  
  36. int main(int argc, char *argv[]){
  37. FILE *f;
  38. struct dati *dati;
  39. //struct dati2 *d2;
  40. int nDati;
  41. int totBesv;
  42. int oreTot;
  43. //int nD2;
  44.  
  45. if(argc!=2){
  46. return 1;
  47. }
  48.  
  49. f=fopen(argv[1],"r");
  50.  
  51. if(f==NULL){
  52. printf("file non trovato\n");
  53. return 1;
  54. }
  55.  
  56. // funzioni per la lettura dei file
  57. dati=letturaFile(f,&nDati);
  58. stampaStructDati(dati,nDati);
  59. //richiesta 1
  60.  
  61. totBesv=totBesvTest(dati,nDati,&oreTot);
  62. //oreTot=totOreTest(dati,nDati);
  63. printf("%d\n%d\n",totBesv,oreTot);
  64.  
  65. // richiesta 2
  66. frequenzaMin=frequenzaMinima(struct dati *d,int n,int *ora);
  67.  
  68. return 0;
  69. }
  70.  
  71.  
  72. struct dati *letturaFile(FILE *f, int *n){
  73.  
  74. int nConv;
  75. int size=10;
  76. char buffer[100];
  77. char s[5];
  78. struct dati *d1,*d2;
  79. *n=0;
  80. d2=malloc(size*sizeof(struct dati));
  81. while(fgets(buffer,sizeof(buffer),f)){
  82.  
  83. d1=d2+ *n;
  84. 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);
  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; // tutto questo per riempire le ultime 4 variabili della strcut
  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->sintomo=1;
  102. }else{
  103. d1->sintomo=0;
  104. }
  105. (*n)++;
  106. if(*n>size){
  107. size=2*size;
  108. d2=realloc(d2,size*sizeof(struct dati));
  109.  
  110. }
  111. }
  112. d2=realloc(d2,(*n)*sizeof(struct dati));
  113. return d2;
  114. }
  115.  
  116. void stampaStructDati(struct dati *dati,int n){
  117.  
  118. int i;
  119. for(i=0;i<n;i++){
  120. //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);
  121. 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);
  122. }
  123. }
  124. int totBesvTest(struct dati *d,int n,int *oreTot){
  125.  
  126. int i;
  127. int totBesv=0; // count da incrementare
  128. for(i=0;i<n;i++){
  129. totBesv+= d[i].besv;
  130.  
  131. }
  132. *oreTot=d[n-1].h-d[0].h+1;
  133. return totBesv;
  134.  
  135. }
  136. /*int totOreTest(struct dati *d,int n){
  137.  
  138. int i;
  139. int oreTot;
  140. for(i+0;i<n;i++){
  141.  
  142. oreTot=oreTot+d[i].h;
  143.  
  144. }
  145. return oreTot;
  146. } */
  147.  
  148. int frequenzaMinima(struct dati *d,int n,int *ora){
  149.  
  150. int i;
  151. int frequenzaMin=100;
  152.  
  153. for(i=0;i<n;i++){
  154. if(d[i].fmin<frequenzaMin){
  155. flag=d[i].fmin;
  156. *ora=d[i].h;
  157. }
  158. }
  159. return frequenzaMin;
  160. }//esame 19-09-2019
  161. //file190919.txt
  162.  
  163. #include <stdio.h>
  164. #include <stdlib.h>
  165. #include <string.h>
  166. #include <math.h>
  167.  
  168. struct dati{
  169. int h;
  170. int battiti;
  171. int fMin;
  172. int fMax;
  173. int fMean;
  174. int besv;
  175. int sonno;
  176. int pasto;
  177. int corsa;
  178. int sintomo;
  179. };
  180. /*struct dati2{
  181. int h;
  182. int battiti;
  183. int fMin;
  184. int fMax;
  185. int fMean;
  186. int besv;
  187. char listaAttivita[10];
  188. };*/
  189.  
  190. struct dati *letturaFile(FILE *f, int *n);
  191. void stampaStructDati(struct dati *dati,int n);
  192. int totBesvTest(struct dati *d,int n,int *oraTot);
  193. //int totOreTest(struct dati *d,int n);
  194.  
  195. int main(int argc, char *argv[]){
  196. FILE *f;
  197. struct dati *dati;
  198. //struct dati2 *d2;
  199. int nDati;
  200. int totBesv;
  201. int oreTot;
  202. //int nD2;
  203.  
  204. if(argc!=2){
  205. return 1;
  206. }
  207.  
  208. f=fopen(argv[1],"r");
  209.  
  210. if(f==NULL){
  211. printf("file non trovato\n");
  212. return 1;
  213. }
  214.  
  215. // funzioni per la lettura dei file
  216. dati=letturaFile(f,&nDati);
  217. stampaStructDati(dati,nDati);
  218. //richiesta 1
  219.  
  220. totBesv=totBesvTest(dati,nDati,&oreTot);
  221. //oreTot=totOreTest(dati,nDati);
  222. printf("%d\n%d\n",totBesv,oreTot);
  223.  
  224. // richiesta 2
  225. frequenzaMin=frequenzaMinima(struct dati *d,int n,int *ora);
  226.  
  227. return 0;
  228. }
  229.  
  230.  
  231. struct dati *letturaFile(FILE *f, int *n){
  232.  
  233. int nConv;
  234. int size=10;
  235. char buffer[100];
  236. char s[5];
  237. struct dati *d1,*d2;
  238. *n=0;
  239. d2=malloc(size*sizeof(struct dati));
  240. while(fgets(buffer,sizeof(buffer),f)){
  241.  
  242. d1=d2+ *n;
  243. 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);
  244. if(s[0]=='S'){
  245. d1->sonno=1;
  246. }else{
  247. d1->sonno=0;
  248. }
  249. if(s[1]=='P'){
  250. d1->pasto=1; // tutto questo per riempire le ultime 4 variabili della strcut
  251. }else{
  252. d1->pasto=0;
  253. }
  254. if(s[2]=='C'){
  255. d1->corsa=1;
  256. }else{
  257. d1->corsa=0;
  258. }
  259. if(s[3]=='D'){
  260. d1->sintomo=1;
  261. }else{
  262. d1->sintomo=0;
  263. }
  264. (*n)++;
  265. if(*n>size){
  266. size=2*size;
  267. d2=realloc(d2,size*sizeof(struct dati));
  268.  
  269. }
  270. }
  271. d2=realloc(d2,(*n)*sizeof(struct dati));
  272. return d2;
  273. }
  274.  
  275. void stampaStructDati(struct dati *dati,int n){
  276.  
  277. int i;
  278. for(i=0;i<n;i++){
  279. //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);
  280. 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);
  281. }
  282. }
  283. int totBesvTest(struct dati *d,int n,int *oreTot){
  284.  
  285. int i;
  286. int totBesv=0; // count da incrementare
  287. for(i=0;i<n;i++){
  288. totBesv+= d[i].besv;
  289.  
  290. }
  291. *oreTot=d[n-1].h-d[0].h+1;
  292. return totBesv;
  293.  
  294. }
  295. /*int totOreTest(struct dati *d,int n){
  296.  
  297. int i;
  298. int oreTot;
  299. for(i+0;i<n;i++){
  300.  
  301. oreTot=oreTot+d[i].h;
  302.  
  303. }
  304. return oreTot;
  305. } */
  306.  
  307. int frequenzaMinima(struct dati *d,int n,int *ora){
  308.  
  309. int i;
  310. int frequenzaMin=100;
  311.  
  312. for(i=0;i<n;i++){
  313. if(d[i].fmin<frequenzaMin){
  314. flag=d[i].fmin;
  315. *ora=d[i].h;
  316. }
  317. }
  318. return frequenzaMin;
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement