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
Другие языки программирования и технологии
Помогите блок написать. На Си написать, как найти первое по алфавиту слово в строке.
Похожие вопросы
- найти первую букву второго слова в строке. c++
- Pascal. Дана строка, найти длину первого и последнего слова первого я нашел, а как второго не понимаю помогите
- замена слов в строке в СИ
- Как найти слово в строке. Паскаль
- Язык Си. Помогите пожалуйста написать простую программу.
- C# Парсинг слов из строки без регистра
- Напишите программу для С++, которая заменяет в символьной строке все буквы a на буквы b, буквы A на буквы B ...
- «Помогите пожалуйста! Очень надо!! ! Нужно написать на языке Си (именно на СИ) . Заранее СПАСИБО!!!»
- Програма на С++ Ввести с клавиатуры строку символов и перевернуть каждое четное слово в строке.
- Помогите, пожалуйста, написать программу на языке Си