Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // esame 12-06-2015
- // file120615.txt
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
- # include <stdio.h>
- struct dati {
- char utente[11]; // numero utente
- int oa; // ora aggancio
- int ma; // min aggancio
- int ou; // ora uscita
- int mu; // min uscita
- };
- struct dati *letturaFile(FILE *f,int *n);
- void stampaStructDati(struct dati *d,int n);
- int utentiAgganciati(struct dati *d,int n,int ora,int min);
- int utentiAgganciati(struct dati *d,int n,int ora,int min);
- int *agganciPerOra(struct dati *d,int n);
- int main( int argc, char *argv[]){
- int n;
- int i ;
- struct dati *dati;
- FILE *f;
- int oa;
- int ma;
- int *agganciTot;
- int utentiA;
- if(argc!=3){ // da richiesta 2 cambio in argc!=3 al posto di argc!=2
- return 1;
- }
- f=fopen(argv[1],"r");
- if(f==NULL){
- printf("file non trovato\n");
- return 1;
- }
- // funzioni di lettura e stampa del file -richiesta 1
- dati=letturaFile(f,&n);
- stampaStructDati(dati,n);
- // richiesta 2
- sscanf(argv[2],"%d:%d",&oa,&ma);
- utentiA=utentiAgganciati(dati,n,oa,ma);
- printf("%d\n",utentiA);
- //richiesta 3
- agganciTot=agganciPerOra(dati,n);
- for(i=0;i<24;i++){
- printf ("%d\n",agganciTot[i]);
- }
- return 0;
- }
- struct dati *letturaFile(FILE *f,int *n){
- int nConv;
- int size=10;
- *n=0;
- char buffer[100];
- struct dati *d1,*d2;
- d2=malloc(size*sizeof(struct dati));
- while(fgets(buffer,sizeof(buffer),f)){
- d1=d2+*n;
- nConv=sscanf(buffer,"%s %d:%d %d:%d ",d1->utente,&d1->oa,&d1->ma,&d1->ou,&d1->mu);
- (*n)++;
- if(*n>=size){
- size=size*2;
- d2=realloc(d2,size*sizeof(struct dati));
- }
- }
- d2=realloc(d2,*n*sizeof(struct dati));
- return d2;
- }
- void stampaStructDati(struct dati *d,int n){
- int i;
- for(i=0;i<n;i++){
- printf("%s %d:%d %d:%d\n",d[i].utente,d[i].oa,d[i].ma,d[i].ou,d[i].mu);
- }
- }
- // richiesta 2
- int utentiAgganciati(struct dati *d,int n,int ora,int min){
- int i;
- int count=0;
- for(i=0;i<n;i++){
- if(d[i].oa==ora && d[i].ma==min){
- count++;
- }
- }
- return count;
- }
- int *agganciPerOra(struct dati *d,int n){
- int *v;
- int i,indice;
- v = malloc(24*sizeof(int)); // non andava perchè non era speificata la dim con la malloc
- for(i = 0; i< 24; i++){
- v[i] = 0;
- }
- for(i=0;i<n;i++){ // trovo gli agganci per ora
- indice=d[i].oa;
- v[indice]++;
- }
- return v;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement