Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- #include <pthread.h>
- char MS[1024];
- int br_red=0,dr2,dr3,kraj=0,broj=0,suma=0,dat;
- void *dretva_dohvati(FILE *u)
- { br_red=0;
- while (fgets(MS,1024,u)!=NULL){
- br_red++;
- while((dr2<=br_red)||(dr3<=br_red)) {}
- }
- kraj=1;
- MS[0]='\0';
- br_red++;
- }
- void *dretva_broji()
- { int i;
- dr2=1;
- while (kraj!=1){ while(dr2>br_red) {}
- if (dat==1) {for(i=0;i<strlen(MS);i++)
- {if (strcmp(&MS[i]," ")==0) broj++;
- }}
- if (dat==2) {for(i=0;i<strlen(MS);i++)
- if ((strcmp(&MS[i],"<")==0)) broj++;
- }
- dr2++;
- }
- }
- void *dretva_suma()
- { int i;
- dr3=1;
- while(kraj!=1){
- while(dr3>br_red){}
- for(i=0;i<strlen(MS);i++) suma^=MS[i];
- dr3++;
- }
- }
- void proces(const char *s,int a)
- {
- FILE *ul;
- int id[3];
- m=a;
- dat=a;
- printf("\n datoteka je tipa %d",dat);
- broj=1;
- suma=0;
- ul=fopen(s,"r");
- if (ul==NULL) {printf("nemogu otvoriti");
- exit(0);}
- pthread_create(&id[0],NULL,dretva_dohvati,ul);
- pthread_create(&id[1],NULL,dretva_broji,NULL);
- pthread_create(&id[2],NULL,dretva_suma,NULL);
- pthread_join(id[0], NULL);
- pthread_join(id[1], NULL);
- pthread_join(id[2], NULL);
- fclose(ul);
- printf("\n Datotka %s ima %d rijeci i suma iznosi %d \n",s,broj,suma);
- }
- int main (int argc, char *argv[]){
- int i,tip,j=0;
- for(i=1;i<argc;i++)
- { if(strcmp(argv[i]+strlen(argv[i])-4,".txt")==0) tip=1;
- else if(strcmp(argv[i]+strlen(argv[i])-5,".html")==0) tip=2;
- else tip=3;
- switch(tip){
- case 1: j++;fork();proces(argv[i],1);exit(0);break;
- case 2: j++;fork();proces(argv[i],2);exit(0);break;
- case 3:printf("ignoriramo datoteku %s",argv[i]);break;
- }
- }
- for(j=1;j<argc;j++) wait(NULL);
- printf("\n %d",broj);
- return 0;
- }
Add Comment
Please, Sign In to add comment