Guest User

Untitled

a guest
Feb 20th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5. #include <pthread.h>
  6.  
  7. char MS[1024];
  8. int br_red=0,dr2,dr3,kraj=0,broj=0,suma=0,dat;
  9.  
  10. void *dretva_dohvati(FILE *u)
  11. { br_red=0;
  12. while (fgets(MS,1024,u)!=NULL){
  13. br_red++;
  14.  
  15. while((dr2<=br_red)||(dr3<=br_red)) {}
  16.  
  17. }
  18.  
  19. kraj=1;
  20. MS[0]='\0';
  21. br_red++;
  22. }
  23. void *dretva_broji()
  24. { int i;
  25. dr2=1;
  26. while (kraj!=1){ while(dr2>br_red) {}
  27.  
  28. if (dat==1) {for(i=0;i<strlen(MS);i++)
  29. {if (strcmp(&MS[i]," ")==0) broj++;
  30. }}
  31. if (dat==2) {for(i=0;i<strlen(MS);i++)
  32. if ((strcmp(&MS[i],"<")==0)) broj++;
  33. }
  34. dr2++;
  35. }
  36. }
  37.  
  38. void *dretva_suma()
  39. { int i;
  40. dr3=1;
  41. while(kraj!=1){
  42. while(dr3>br_red){}
  43. for(i=0;i<strlen(MS);i++) suma^=MS[i];
  44. dr3++;
  45. }
  46. }
  47. void proces(const char *s,int a)
  48. {
  49. FILE *ul;
  50. int id[3];
  51. m=a;
  52. dat=a;
  53. printf("\n datoteka je tipa %d",dat);
  54. broj=1;
  55. suma=0;
  56. ul=fopen(s,"r");
  57. if (ul==NULL) {printf("nemogu otvoriti");
  58. exit(0);}
  59. pthread_create(&id[0],NULL,dretva_dohvati,ul);
  60. pthread_create(&id[1],NULL,dretva_broji,NULL);
  61. pthread_create(&id[2],NULL,dretva_suma,NULL);
  62. pthread_join(id[0], NULL);
  63. pthread_join(id[1], NULL);
  64. pthread_join(id[2], NULL);
  65. fclose(ul);
  66. printf("\n Datotka %s ima %d rijeci i suma iznosi %d \n",s,broj,suma);
  67.  
  68. }
  69.  
  70.  
  71. int main (int argc, char *argv[]){
  72.  
  73. int i,tip,j=0;
  74.  
  75. for(i=1;i<argc;i++)
  76. { if(strcmp(argv[i]+strlen(argv[i])-4,".txt")==0) tip=1;
  77. else if(strcmp(argv[i]+strlen(argv[i])-5,".html")==0) tip=2;
  78. else tip=3;
  79. switch(tip){
  80. case 1: j++;fork();proces(argv[i],1);exit(0);break;
  81. case 2: j++;fork();proces(argv[i],2);exit(0);break;
  82. case 3:printf("ignoriramo datoteku %s",argv[i]);break;
  83.  
  84. }
  85.  
  86. }
  87. for(j=1;j<argc;j++) wait(NULL);
  88.  
  89. printf("\n %d",broj);
  90. return 0;
  91.  
  92.  
  93. }
Add Comment
Please, Sign In to add comment