Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. //
  2. // main.c
  3. // h.w.8
  4. //
  5. // Created by Темирхан Мамаев on 05/12/2019.
  6. // Copyright © 2019 Темирхан Мамаев. All rights reserved.
  7. //
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12. #include <ctype.h>
  13. #include <limits.h>
  14.  
  15. char *min_alpha(char **s, int size_arr){
  16. char *p_min_alpha = NULL;
  17. int min_count = INT_MAX;
  18. for (char **ps = s; ps < s + size_arr; ps++){
  19. int count = 0;
  20. for (char *sub = *ps; sub < *ps + strlen(*ps); sub++){
  21. if (isalpha(*sub)) {
  22. count++;
  23. }
  24. }
  25. if (count < min_count) {
  26. p_min_alpha = *ps;
  27. min_count = count;
  28. }
  29. }
  30. return p_min_alpha;
  31. }
  32.  
  33. char **podstr_split(char **s, int size_arr, char fs, char ls){
  34. int n = 0;
  35. char **podstr_arr = malloc(sizeof(char*) * 5);
  36. for(char **str = s; str < s + size_arr; str++){
  37. char *q = *str, *p = *str;
  38. while((q = strchr(q, fs)) && (p = strchr(q, ls)))
  39. if (strchr(q, '*')) {
  40. *(podstr_arr + n) = malloc(sizeof(char) * (p - q));
  41. strncpy(*(podstr_arr + n), (q + 1), (p - q - 1));
  42. n++;
  43. q++;
  44. // *(*(podstr_arr + n) + (p - q + 1)) = '\0';
  45. }
  46. if (n % 5 == 0) {
  47. podstr_arr = realloc(podstr_arr, sizeof(char*) * (n + 5));
  48. }
  49. }
  50. *(podstr_arr + n) = NULL;
  51. return podstr_arr;
  52. }
  53.  
  54. int podstr_arr(char **s, char **podstr, int size_arr){
  55. int n = 1;
  56. char **pod = (char**)malloc(sizeof(char*) * 5);
  57. for (char **str = s; str < s + size_arr; str++) {
  58. for (pod = podstr; pod < podstr + n; pod++) {
  59. char *q = strchr(*str, '('), *p = strchr(*str, ')'), *star = *str;
  60. while (q && p) {
  61. q = strchr(q, '(');
  62. p = strchr(q, ')');
  63. star = strchr(q, '*');
  64. if (p && q && p > q && star < p){
  65. *pod = malloc(sizeof(char) * (p - q));
  66. strncpy(*pod, p + 1, (p - q - 1));
  67. **(pod + (p - q)) = '\0';
  68. n++;
  69. }
  70. q++; p++; star++;
  71. if (n % 5 == 0) {
  72. pod = realloc(pod, sizeof(char*) * (n + 5));
  73. }
  74. }
  75. }
  76. }
  77. return n;
  78. }
  79.  
  80. void vstav_char(char *s, char ps, char h){
  81. char *p = s, *q;
  82. while((p = strchr(p, h))){
  83. q = strchr(p, '\0');
  84. while(q > p){
  85. *(q + 1) = *q;
  86. q--;
  87. }
  88. *(p + 1) = ps;
  89. p++;
  90. }
  91. }
  92.  
  93.  
  94. int main(int argc, const char * argv[]) {
  95. FILE *f;
  96. char buf[80], **p = NULL, **str = NULL, **s, *p_max, **podstr;
  97. int n = 0;
  98. if (!(f = fopen("data.txt", "rb"))) {
  99. printf("file don't exist");
  100. return 1;
  101. }
  102. else{
  103. while (!feof(f)) {
  104. str = (char**)malloc(sizeof(char*) * 5);
  105. p = str;
  106. while (!feof(f)) {
  107. fgets(buf, 79, f);
  108. *p = (char*)malloc((strlen(buf) + 1) * sizeof(char));
  109. strcpy(*p, buf);
  110. p++;
  111. n++;
  112. if (n % 5 == 0) {
  113. str = (char**)realloc(str, sizeof(char*) * (n + 5));
  114. p = str + n;
  115. }
  116. }
  117. }
  118. }
  119. podstr = podstr_split(str, n, '(', ')');
  120. p_max = min_alpha(str, n);
  121. puts(p_max);
  122. for(s = str; s < str + n; s++){
  123. // vstav_char(*s, '0', '1');
  124. puts(*s);
  125. free(*s);
  126. }
  127. printf("\n__________________________________\n");
  128. for(s = podstr; *s; s++){
  129. puts(*s);
  130. free(*s);
  131. }
  132. free(podstr);
  133. free(str);
  134. fclose(f);
  135. printf("\n");
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement