Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // esame 27-06-2016
- // file 27-06-2016
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- struct cartolina{
- int anno;
- int mese;
- char mittente[10];
- char destinatario[10];
- char luogo[10];
- };
- struct cartolina *letturaFile(FILE *f,int *n);
- void stampaStruttura(struct cartolina *c,int n);
- int calcoloNumeroCartoline(struct cartolina *c,int n);
- int sommaMesi(struct cartolina *c,int n);
- int main(int argc, char *argv[]){
- int n,numC,durataM;
- FILE *f;
- struct cartolina *cartolina;
- if(argc!=2){
- printf("parametri inseriti errati\n");
- return 1;
- }
- f=fopen(argv[1],"r");
- if(f==NULL){
- printf("file non trovato\n");
- return 1;
- }
- //funzioni lettura e stampa
- cartolina=letturaFile(f,&n);
- fclose(f);
- stampaStruttura(cartolina,n);
- // richiesta 1
- numC=calcoloNumeroCartoline(cartolina,n);
- printf("numero cartoline:%d\n",numC);
- //richiesta 2
- durataM=sommaMesi(cartolina,n);
- printf("durata mese:%d\n",durataM);
- return 0;
- }
- struct cartolina *letturaFile(FILE *f,int *n){
- int nConv;
- int size=10;
- char buffer[100];
- struct cartolina *c1,*c2;
- *n=0;
- c2=malloc(size*sizeof(struct cartolina));
- while(fgets(buffer,sizeof(buffer),f)){
- c1=c2 + *n;
- nConv=sscanf(buffer,"%d %d %s %s %s",&c1->anno,&c1->mese,c1->mittente,c1->destinatario,c1->luogo);
- (*n)++;
- if(*n>=size){
- size=size*2;
- c2=realloc(c2,size*sizeof(struct cartolina));
- }
- }
- c2=realloc(c2,*n*sizeof(struct cartolina));
- return c2;
- }
- void stampaStruttura(struct cartolina *c,int n){
- int i;
- for(i=0;i<n;i++){
- printf("%d %d %s %s %s\n",c[i].anno,c[i].mese,c[i].mittente,c[i].destinatario,c[i].luogo);
- }
- }
- int calcoloNumeroCartoline(struct cartolina *c,int n){
- int i;
- int count=0;
- for(i=0;i<n;i++){
- if(c[i].mittente!=c[i].destinatario){
- count++;
- }
- }
- return count;
- }
- int sommaMesi(struct cartolina *c,int n){
- int i;
- int count=0;
- for(i=0;i<n;i++){
- count+=c[i].mese;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement