Advertisement
Perlamado

Untitled

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