Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. // esame 27-06-2016
  2. // file 27-06-2016
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <math.h>
  8.  
  9. struct cartolina{
  10. int anno;
  11. int mese;
  12. char mittente[10];
  13. char destinatario[10];
  14. char luogo[10];
  15. };
  16.  
  17. struct cartolina *letturaFile(FILE *f,int *n);
  18. void stampaStruttura(struct cartolina *c,int n);
  19. int calcoloNumeroCartoline(struct cartolina *c,int n);
  20. int sommaMesi(struct cartolina *c,int n);
  21.  
  22. int main(int argc, char *argv[]){
  23.  
  24. int n,numC,durataM;
  25. FILE *f;
  26. struct cartolina *cartolina;
  27.  
  28. if(argc!=2){
  29. printf("parametri inseriti errati\n");
  30. return 1;
  31. }
  32. f=fopen(argv[1],"r");
  33. if(f==NULL){
  34. printf("file non trovato\n");
  35. return 1;
  36. }
  37. //funzioni lettura e stampa
  38. cartolina=letturaFile(f,&n);
  39. fclose(f);
  40. stampaStruttura(cartolina,n);
  41. // richiesta 1
  42. numC=calcoloNumeroCartoline(cartolina,n);
  43. printf("numero cartoline:%d\n",numC);
  44. //richiesta 2
  45. durataM=sommaMesi(cartolina,n);
  46. printf("durata mese:%d\n",durataM);
  47. return 0;
  48.  
  49. }
  50. struct cartolina *letturaFile(FILE *f,int *n){
  51.  
  52. int nConv;
  53. int size=10;
  54. char buffer[100];
  55. struct cartolina *c1,*c2;
  56. *n=0;
  57.  
  58. c2=malloc(size*sizeof(struct cartolina));
  59.  
  60. while(fgets(buffer,sizeof(buffer),f)){
  61. c1=c2 + *n;
  62. nConv=sscanf(buffer,"%d %d %s %s %s",&c1->anno,&c1->mese,c1->mittente,c1->destinatario,c1->luogo);
  63. (*n)++;
  64. if(*n>=size){
  65. size=size*2;
  66. c2=realloc(c2,size*sizeof(struct cartolina));
  67. }
  68. }
  69. c2=realloc(c2,*n*sizeof(struct cartolina));
  70. return c2;
  71. }
  72. void stampaStruttura(struct cartolina *c,int n){
  73. int i;
  74. for(i=0;i<n;i++){
  75. printf("%d %d %s %s %s\n",c[i].anno,c[i].mese,c[i].mittente,c[i].destinatario,c[i].luogo);
  76. }
  77. }
  78. int calcoloNumeroCartoline(struct cartolina *c,int n){
  79.  
  80. int i;
  81. int count=0;
  82. for(i=0;i<n;i++){
  83.  
  84. if(c[i].mittente!=c[i].destinatario){
  85. count++;
  86. }
  87. }
  88. return count;
  89. }
  90. int sommaMesi(struct cartolina *c,int n){
  91. int i;
  92. int count=0;
  93. for(i=0;i<n;i++){
  94. count+=c[i].mese;
  95. }
  96. return count;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement