Advertisement
intsashka

Untitled

Sep 19th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdbool.h>
  4.  
  5. /*DEBUG*/
  6. enum
  7. {
  8. MAX_LEN_PATH = FILENAME_MAX + 2,
  9. MAX_OPEN_FILES = 100,
  10. MAX_NUM_FROM_FILES = 4
  11. };
  12.  
  13. int mas[MAX_OPEN_FILES][10000], sz[MAX_OPEN_FILES];
  14.  
  15. void
  16. my_func(char path[MAX_OPEN_FILES][MAX_LEN_PATH], int num)
  17. {
  18. FILE *out = stdout;
  19. FILE *in = NULL;
  20. printf("FUNC\n");
  21. int i, j, pos[MAX_OPEN_FILES], sz[MAX_OPEN_FILES];
  22. for(i = 0; i < num; ++i) {
  23. in = fopen(path[i], "r");
  24. sz[i] = 0;
  25. while(fscanf(in, "%d", &mas[i][sz[i]]) == 1) {
  26. ++sz[i];
  27. }
  28. fclose(in);
  29. }
  30.  
  31. for(i = 0; i < num; ++i) {
  32. pos[i] = 0;
  33. }
  34. bool flag;
  35. for(i = 0; i < sz[0]; ++i) {
  36. flag = true;
  37. for(j = 1; j < num; ++j) {
  38. while(pos[j] < sz[j] && mas[j][pos[j]] > mas[0][i]) {
  39. ++pos[j];
  40. }
  41. if(pos[j] == sz[j] || mas[j][pos[j]] != mas[0][i]) {
  42. flag = false;
  43. break;
  44. }
  45. }
  46. if(flag) {
  47. fprintf(out, "%d ", mas[0][i]);
  48. }
  49. }
  50. fprintf(out, "\n");
  51. }
  52.  
  53. #include <stdlib.h>
  54. #include <time.h>
  55. void
  56. my_gen(int num, int N)
  57. {
  58. FILE *in = fopen("input.txt", "w");
  59. FILE *ff = NULL;
  60. char path[100], number[100];
  61. int i, j, c;
  62. srand(time(NULL));
  63. for(i=0; i<num; ++i)
  64. {
  65. path[0] = 'i';
  66. path[1] = 'n';
  67. path[2] = i/10 + '0';
  68. path[3] = i%10 + '0';
  69. path[4] = 0;
  70. strcat(path, ".txt");
  71. fprintf(in, "%s\n", path);
  72. ff = fopen(path, "w");
  73. c = rand()%10;
  74. for(j = 0; j < N; ++j) {
  75. fprintf(ff, "%d ", c);
  76. c -= rand()%2 + 1;
  77. }
  78. fclose(ff);
  79. }
  80. fclose(in);
  81. }
  82. int
  83. main(void)
  84. {
  85. freopen("input.txt", "r", stdin);
  86.  
  87. my_gen(100, 1000);
  88. //return 0;
  89. enum
  90. {
  91. MAX_LEN_PATH = FILENAME_MAX + 2,
  92. MAX_OPEN_FILES = 100,
  93. MAX_NUM_FROM_FILES = 4
  94. };
  95.  
  96. int i, j;
  97. char path[MAX_OPEN_FILES][MAX_LEN_PATH];
  98. int len, num = 0;
  99.  
  100. fgets(path[num], MAX_LEN_PATH, stdin);
  101. while(!feof(stdin)) {
  102. len = strlen(path[num]);
  103. if(len && path[num][len-1] == '\n') {
  104. path[num][--len] = 0;
  105. }
  106. if(len && path[num][len-1] == '\r') {
  107. path[num][--len] = 0;
  108. }
  109.  
  110. if(len) {
  111. ++num;
  112. }
  113. fgets(path[num], MAX_LEN_PATH, stdin);
  114. }
  115.  
  116. long pos[MAX_OPEN_FILES];
  117. int date[MAX_OPEN_FILES];
  118.  
  119. for(i=0; i<num; ++i) {
  120. pos[i] = 0;
  121. }
  122.  
  123. printf("num=%d\n", num);
  124. FILE *in = NULL;
  125. int fli = 0;
  126. for(i = 0; i < num; ++i) {
  127. in = fopen(path[i], "r");
  128. if(fscanf(in, "%d", &date[i]) <= 0) {
  129. fclose(in);
  130. printf("\n");
  131. return 0;
  132. }
  133. pos[i] = ftell(in);
  134. fclose(in);
  135. }
  136. // my_func(path, num);
  137.  
  138. int mn, mx;
  139. while(1) {
  140. mn = mx = 0;
  141. for(i = 1; i < num; ++i) {
  142. if(date[i] > date[mx]) {
  143. mx = i;
  144. }
  145. if(date[i] < date[mn]) {
  146. mn = i;
  147. }
  148. }
  149. //printf("%d %d\n", mn, mx);
  150. if(mn == mx) {
  151. printf("%d ", date[0]);
  152. for(i = 0; i < num; ++i) {
  153. in = fopen(path[i], "r");
  154. fseek(in, pos[i], SEEK_SET);
  155.  
  156. if(fscanf(in, "%d", &date[i]) <= 0) {
  157. fclose(in);
  158. printf("\n");
  159. return 0;
  160. }
  161.  
  162. pos[i] = ftell(in);
  163. fclose(in);
  164. }
  165. } else {
  166. in = fopen(path[mx], "r");
  167. fseek(in, pos[mx], SEEK_SET);
  168.  
  169. if(fscanf(in, "%d", &date[mx]) <= 0) {
  170. fclose(in);
  171. break;
  172. }
  173.  
  174. pos[mx] = ftell(in);
  175. fclose(in);
  176. }
  177. }
  178.  
  179.  
  180.  
  181. return 0;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement