Advertisement
Perlamado

Untitled

Feb 24th, 2020
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. // esame 12-06-2015
  2. // file120615.txt
  3.  
  4. #include <math.h>
  5. #include <string.h>
  6. #include <stdlib.h>
  7. # include <stdio.h>
  8. struct dati {
  9. char utente[11]; // numero utente
  10. int oa; // ora aggancio
  11. int ma; // min aggancio
  12. int ou; // ora uscita
  13. int mu; // min uscita
  14. };
  15.  
  16. struct dati *letturaFile(FILE *f,int *n);
  17. void stampaStructDati(struct dati *d,int n);
  18. int utentiAgganciati(struct dati *d,int n,int ora,int min);
  19. int utentiAgganciati(struct dati *d,int n,int ora,int min);
  20. int *agganciPerOra(struct dati *d,int n);
  21.  
  22. int main( int argc, char *argv[]){
  23.  
  24. int n;
  25. int i ;
  26. struct dati *dati;
  27. FILE *f;
  28. int oa;
  29. int ma;
  30. int *agganciTot;
  31. int utentiA;
  32.  
  33.  
  34. if(argc!=3){ // da richiesta 2 cambio in argc!=3 al posto di argc!=2
  35. return 1;
  36. }
  37. f=fopen(argv[1],"r");
  38.  
  39. if(f==NULL){
  40. printf("file non trovato\n");
  41. return 1;
  42. }
  43. // funzioni di lettura e stampa del file -richiesta 1
  44. dati=letturaFile(f,&n);
  45. stampaStructDati(dati,n);
  46. // richiesta 2
  47. sscanf(argv[2],"%d:%d",&oa,&ma);
  48. utentiA=utentiAgganciati(dati,n,oa,ma);
  49. printf("%d\n",utentiA);
  50. //richiesta 3
  51. agganciTot=agganciPerOra(dati,n);
  52.  
  53. for(i=0;i<24;i++){
  54. printf ("%d\n",agganciTot[i]);
  55. }
  56. return 0;
  57. }
  58.  
  59. struct dati *letturaFile(FILE *f,int *n){
  60.  
  61. int nConv;
  62. int size=10;
  63. *n=0;
  64. char buffer[100];
  65. struct dati *d1,*d2;
  66.  
  67. d2=malloc(size*sizeof(struct dati));
  68. while(fgets(buffer,sizeof(buffer),f)){
  69. d1=d2+*n;
  70. nConv=sscanf(buffer,"%s %d:%d %d:%d ",d1->utente,&d1->oa,&d1->ma,&d1->ou,&d1->mu);
  71. (*n)++;
  72.  
  73. if(*n>=size){
  74. size=size*2;
  75. d2=realloc(d2,size*sizeof(struct dati));
  76. }
  77. }
  78. d2=realloc(d2,*n*sizeof(struct dati));
  79. return d2;
  80. }
  81. void stampaStructDati(struct dati *d,int n){
  82. int i;
  83. for(i=0;i<n;i++){
  84. printf("%s %d:%d %d:%d\n",d[i].utente,d[i].oa,d[i].ma,d[i].ou,d[i].mu);
  85. }
  86. }
  87.  
  88.  
  89.  
  90. // richiesta 2
  91. int utentiAgganciati(struct dati *d,int n,int ora,int min){
  92. int i;
  93. int count=0;
  94. for(i=0;i<n;i++){
  95. if(d[i].oa==ora && d[i].ma==min){
  96. count++;
  97. }
  98. }
  99. return count;
  100. }
  101.  
  102. int *agganciPerOra(struct dati *d,int n){
  103.  
  104. int *v;
  105. int i,indice;
  106. v = malloc(24*sizeof(int)); // non andava perchè non era speificata la dim con la malloc
  107.  
  108. for(i = 0; i< 24; i++){
  109. v[i] = 0;
  110. }
  111. for(i=0;i<n;i++){ // trovo gli agganci per ora
  112.  
  113. indice=d[i].oa;
  114. v[indice]++;
  115.  
  116. }
  117. return v;
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement