Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // esame 19.09.2019
- // file1.txt
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- struct dati {
- int ora;
- int battiti;
- int Fmin;
- int Fmax;
- int Fmedia;
- int besv;
- int sonno;
- int pasto;
- int corsa;
- int sintomi;
- };
- struct dati *letturaFile(FILE *f,int *n);
- void stampaStructDati(struct dati *d,int n);
- int numeroBesvTotali(struct dati *d,int n);
- int tempoBesvTest(struct dati *d,int n);
- int frequenzaMinima(struct dati *d,int n);
- int frequenzaMassima(struct dati *d,int n);
- int frequenzaMedia(struct dati *d,int n);
- int sintomiSonno(struct dati *d,int n);
- int durataSonno(struct dati *d,int n,int *inizio,int *fine);
- int oraBradicardia( struct dati *d,int n,int fmin);
- int oraTachicardia( struct dati *d,int n);
- int main( int argc, char *argv[]){
- int n,besv,oraBesv,fmin,fmax,fmedia,numSintomi,sonno,inizio,fine,oraBradi,oraTachi;
- struct dati *dati;
- FILE*f;
- 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;
- }
- //funzione lettura e stampa struct dati
- dati=letturaFile(f,&n);
- fclose(f);
- stampaStructDati(dati,n);
- // richiesta 1
- besv=numeroBesvTotali(dati,n);
- oraBesv=tempoBesvTest(dati,n);
- printf("[TOTALI]\n%d\n%d\n",oraBesv,besv);
- //richiesta 2
- fmin=frequenzaMinima(dati,n);
- fmax=frequenzaMassima(dati, n);
- fmedia=frequenzaMedia(dati,n);
- printf("[FREQUENZA]\n%d\n%d\n%d\n",fmin,fmax,fmedia);
- //richiesta 3
- numSintomi=sintomiSonno(dati, n);
- printf("[SINTOMI]\n%d\n",numSintomi);
- //richiesta 4
- sonno=durataSonno(dati,n,&inizio,&fine);
- printf("[SONNO]\n%d\n%d\n%d\n",inizio,fine,sonno);
- //richiesta 5ΓΉ
- oraBradi=oraBradicardia(dati,n,fmin);
- oraTachi=oraTachicardia(dati,n);
- printf("[BATTITI]\n%d\n%d\n",oraBradi,oraTachi);
- return 0;
- }
- struct dati *letturaFile(FILE *f,int *n){
- int nConv;
- int size=10;
- char buffer[100];
- char s[5];
- struct dati *d1,*d2;
- *n=0;
- d2=malloc(size*sizeof(struct dati));
- while(fgets(buffer,sizeof(buffer),f)){
- d1=d2 +*n;
- nConv=sscanf(buffer,"%d\t%d\t%d\t%d\t%d\t%d\t%s",&d1->ora,&d1->battiti,&d1->Fmin,&d1->Fmax,&d1->Fmedia,&d1->besv,s);
- if(s[0]=='S'){
- d1->sonno=1;
- }else{
- d1->sonno=0;
- }
- if(s[1]=='P'){
- d1->pasto=1;
- }else{
- d1->pasto=0;
- }
- if(s[2]=='C'){
- d1->corsa=1;
- }else{
- d1->corsa=0;
- }
- if(s[3]=='D'){
- d1->sintomi=1;
- }else{
- d1->sintomi=0;
- }
- (*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("%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",d[i].ora,d[i].battiti,d[i].Fmin,d[i].Fmax,d[i].Fmedia,d[i].besv,d[i].sonno,d[i].pasto,d[i].corsa,d[i].sintomi);
- }
- }
- int numeroBesvTotali(struct dati *d,int n){
- int i;
- int count=0;
- for(i=0;i<n;i++){
- count+=d[i].besv;
- }
- return count;
- }
- int tempoBesvTest(struct dati *d,int n){
- int ora=0;
- ora+=d[n-1].ora-d[0].ora;
- return ora;
- }
- int frequenzaMinima(struct dati *d,int n){
- int i;
- int min=100;
- for(i=0;i<n;i++){
- if(d[i].Fmin<min){
- min=d[i].Fmin;
- }
- }
- return min;
- }
- int frequenzaMassima(struct dati *d,int n){
- int i;
- int max=0;
- for(i=0;i<n;i++){
- if(d[i].Fmax>max){
- max=d[i].Fmax;
- }
- }
- return max;
- }
- int frequenzaMedia(struct dati *d,int n){
- int i;
- int count=0;
- int media=0;
- for(i=0;i<n;i++){
- count+=d[i].Fmedia;
- }
- media=count/n;
- return media;
- }
- int sintomiSonno(struct dati *d,int n){
- int i;
- int count=0;
- for(i=0;i<n;i++){
- if(d[i].sonno==1 && d[i].sintomi==1){
- count++;
- }
- }
- return count;
- }
- int durataSonno(struct dati *d,int n,int *inizio,int *fine){
- int i;
- int countI;
- int countF;
- int count =0;
- for(i=0;i<n;i++){
- if(d[i].sonno==1 ){
- *fine=d[i].ora;
- if(countI==0){
- *inizio=d[i].ora;
- countI=1;
- }
- if(countF==0){
- count++;
- countF=1;
- }
- }else{
- countF=0;
- }
- }
- return count;
- }
- int oraBradicardia( struct dati *d,int n,int fmin){
- int i,ora;
- int min=100;
- //int v[n];
- /*for(i=0;i<n;i++){
- v[i]=0;
- }*/
- for(i=0;i<n;i++){
- if(fmin<min) {
- ora=d[i].ora;
- }
- }
- return ora;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement