Другие языки программирования и технологии

Помогите блок написать. На Си написать, как найти первое по алфавиту слово в строке.

1. Сканируешь строку посимвольно до пробела или табулятора или конца строки,
выделяешь первое слово, запоминаешь в массиве позиций Р его позицию P[0].
2. Если конец строки не обнаружен (по длине строки или по концевому символу) , то сканируешь дальше, выделяя следующее слово и запоминаешь его позицию P[1].
3. И так далее до самого конца строки.
4. дальше надо в массиве Р, в котором записаны позиции,
менять местами значения массива,
если при сортировке обнаруживается, что второе меньше по алфавиту чем первое.

Алгоритм сортировки может быть любым.
Например, такой (пузырьковая) ,
Из массива P выбираются позиции из P[0] и P[1] и соответствующие слова сравниваются. Если условие убывания есть, то значения P[0] и P[1] меняем местами, используя вспомогательную переменную.
Затем сравниваются слова для P[2] и P[2],
и так до конца цикла.
Но внутри цикла надо предусмотреть еще цикл обратного хода.
Он начинает действовать после второго шага проверки, то есть после фиксации P[1] и P[2].
Если пришлось поменять из местами, то надо полученное только что меньшее слово
с позиции P[1] сравнить с предыдущим меньшим словом, и поменять в массиве
значения P[0] и P[1] если слово от P[1] меньше чем от P[0].
Но это надо не напрямую проверить, а во внутреннем цикле, с использованием индекса цикла, чтобы можно было отсчитывать число проверок с шагом -1.

После этого можно продолжить выполнение внешнего цикла проверок.

Получается что проверяемое слово перетаскивается как бы в голову списка, если стоит после старшего. И перетаскивается до тех пор пока это условие повторяется.

Итак, получим отсортированный массив позиций P.
Затем подряд сцепим в новую строку слова P[0], P[1], P[2]...
Функция сравнения strcmp или похожая, функция сцепления strcat, длины strlen
Danik Kornoukhov
Danik Kornoukhov
70 042
Лучший ответ