Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int sort(char* arr, char delim)
- {
- int size1 = SIZE, size2 = SIZE, i = 0, j = 0, k = 0, bool = 0;/*i,j и k просто счетчики */
- char* arr1 = (char*)malloc(size1 * sizeof(char));
- char** arr2 = (char**)malloc(size2 * sizeof(char*));/*Массив массивов*/
- printf("Вот такую строку функция получает на входе!\n");
- i = 0;
- while(arr[i] != '\0')
- {
- printf("%c", arr[i]);
- i++;
- }
- printf("\n\n");
- i = 0;
- printf("Выведем подстроки:\n");
- while (arr[i] != '\0')
- {
- printf("Обрабатываемая буква = %c\n", arr[i]);
- if ((arr[i] == delim) && (j != 0))/*дошли до разделителя*/
- {
- if (k == size2)
- {
- size2 *= 2;
- arr2 = (char**)realloc(arr2,size2 * sizeof(char*));
- }
- arr2[k] = arr1;
- printf("Подстрока номер %d\n", k);
- bool = 0;
- while(arr2[k][bool] != '\0')
- {
- printf("%c", arr2[k][bool]);
- bool++;
- }
- printf("\n");
- size1 = SIZE;
- arr1 = (char*)malloc(size1 * sizeof(char));
- k++;
- i++;
- j = 0;
- }
- else if (arr[i] == delim)
- i++;
- else
- {
- if (j == size1)
- {
- size1 *= 2;
- arr1 = (char*)realloc(arr1, size1 * sizeof(char));
- }
- arr1[j] =arr[i];
- j++;
- i++;
- }
- }
- bool = 0;
- printf("OSNOVNOI CYCLE\n");
- if (j != 0)/*Добавляем последнюю строку в массив массивов */
- {
- if (k == size2)
- {
- size2 *= 2;
- arr2 = (char**)realloc(arr2, size2 * sizeof(char*));
- }
- printf("Может ЗДЕСЬ!!,,!,!,!,\n");
- arr2[k] = arr1;
- printf("А МОЖЕТ ЗДЕСЬ??\n");
- bool = 0;
- while(arr2[k][bool] != '\0')
- {
- printf("%c", arr2[k][bool]);
- bool++;
- }
- bool = 0;
- printf("\n");
- k++;
- j = 0;
- }
- printf("\nКоличество подстрок = %d\n", k);
- printf("В лексикографическом порядке\n");
- if ((j == 0) && (k == 0))/*Если состоит из разделителей */
- {
- printf("Строка разделителей!\n");
- free(arr1);
- free(arr2);
- return 0;
- }
- printf("PERED SORTIROVKOI\n");
- while (bool == 0)/*Сортируем пузырьком*/
- {
- bool = -1;
- for (j = 0; j != (k - 1); j++)
- {
- if (sravn(arr2[j], arr2[j+1]) == 0)
- {
- bool = 0;
- arr1 = arr2[j];
- arr2[j] = arr2[j+1];
- arr2[j+1] = arr1;
- }
- }
- }
- printf("POSLE SORTIROVKI\n");
- for (j = 0; j != k ; j++)
- {
- i = 0;
- while(arr2[j][i] != '\0')
- {
- printf("%c", arr2[j][i]);
- i++;
- }
- printf("\n");
- }
- printf("VIVEL VSE STROKI\n");
- for(j = 0;j != k ; j++)
- free(arr2[j]);
- free(arr2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement