Advertisement
Ortodecimal

Untitled

Oct 19th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. int sort(char* arr, char delim)
  2. {
  3. int size1 = SIZE, size2 = SIZE, i = 0, j = 0, k = 0, bool = 0;/*i,j и k просто счетчики */
  4. char* arr1 = (char*)malloc(size1 * sizeof(char));
  5. char** arr2 = (char**)malloc(size2 * sizeof(char*));/*Массив массивов*/
  6. printf("Вот такую строку функция получает на входе!\n");
  7. i = 0;
  8. while(arr[i] != '\0')
  9. {
  10. printf("%c", arr[i]);
  11. i++;
  12. }
  13. printf("\n\n");
  14. i = 0;
  15. printf("Выведем подстроки:\n");
  16. while (arr[i] != '\0')
  17. {
  18. printf("Обрабатываемая буква = %c\n", arr[i]);
  19. if ((arr[i] == delim) && (j != 0))/*дошли до разделителя*/
  20. {
  21. if (k == size2)
  22. {
  23. size2 *= 2;
  24. arr2 = (char**)realloc(arr2,size2 * sizeof(char*));
  25. }
  26. arr2[k] = arr1;
  27. printf("Подстрока номер %d\n", k);
  28. bool = 0;
  29. while(arr2[k][bool] != '\0')
  30. {
  31. printf("%c", arr2[k][bool]);
  32. bool++;
  33. }
  34. printf("\n");
  35. size1 = SIZE;
  36. arr1 = (char*)malloc(size1 * sizeof(char));
  37. k++;
  38. i++;
  39. j = 0;
  40. }
  41. else if (arr[i] == delim)
  42. i++;
  43. else
  44. {
  45. if (j == size1)
  46. {
  47. size1 *= 2;
  48. arr1 = (char*)realloc(arr1, size1 * sizeof(char));
  49. }
  50. arr1[j] =arr[i];
  51. j++;
  52. i++;
  53. }
  54. }
  55. bool = 0;
  56. printf("OSNOVNOI CYCLE\n");
  57.  
  58. if (j != 0)/*Добавляем последнюю строку в массив массивов */
  59. {
  60. if (k == size2)
  61. {
  62. size2 *= 2;
  63. arr2 = (char**)realloc(arr2, size2 * sizeof(char*));
  64. }
  65. printf("Может ЗДЕСЬ!!,,!,!,!,\n");
  66. arr2[k] = arr1;
  67. printf("А МОЖЕТ ЗДЕСЬ??\n");
  68. bool = 0;
  69. while(arr2[k][bool] != '\0')
  70. {
  71. printf("%c", arr2[k][bool]);
  72. bool++;
  73. }
  74. bool = 0;
  75. printf("\n");
  76. k++;
  77. j = 0;
  78. }
  79. printf("\nКоличество подстрок = %d\n", k);
  80. printf("В лексикографическом порядке\n");
  81. if ((j == 0) && (k == 0))/*Если состоит из разделителей */
  82. {
  83. printf("Строка разделителей!\n");
  84. free(arr1);
  85. free(arr2);
  86. return 0;
  87. }
  88. printf("PERED SORTIROVKOI\n");
  89. while (bool == 0)/*Сортируем пузырьком*/
  90. {
  91. bool = -1;
  92. for (j = 0; j != (k - 1); j++)
  93. {
  94. if (sravn(arr2[j], arr2[j+1]) == 0)
  95. {
  96. bool = 0;
  97. arr1 = arr2[j];
  98. arr2[j] = arr2[j+1];
  99. arr2[j+1] = arr1;
  100. }
  101. }
  102. }
  103. printf("POSLE SORTIROVKI\n");
  104. for (j = 0; j != k ; j++)
  105. {
  106. i = 0;
  107. while(arr2[j][i] != '\0')
  108. {
  109. printf("%c", arr2[j][i]);
  110. i++;
  111. }
  112. printf("\n");
  113. }
  114. printf("VIVEL VSE STROKI\n");
  115. for(j = 0;j != k ; j++)
  116. free(arr2[j]);
  117. free(arr2);
  118. return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement