Здравствуйте!Мне задали в универе вот такую задачу:
"Отсортировать слова в строке по алфавиту"
Думал над ней долго и не могу понять следущее:
Как из строки запомнить в переменные все слова, ведь слов всегда разное количество?
Как потом сравнить эти слова по буквам, если я их разделил, а затем переставить в нужном порядке?
Нужно учесть то, что делать это надо в стиле С,а не С++, т.е. string.h нельзя использовать.
[C] Задача с использованием строк и символов
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Первое, что приходит в голову:
1. Подсчитать количество слов в строке.
2. Создать динамически массив, размером равным количеству слов и поместить в каждый его элемент индекс первой буквы каждого слова.
3. Создать динамически ещё одну такую же строку, как наша исходная строка.
4. Далее используя поиск минимального слова в цикле копировать слово во вторую строку, затем очищать соответствующий элемент массива индексов (например записав туда -1).
Как-то так.
Однозначно есть более быстрый алгоритм. Повторяю, это первое, что пришло в голову.
1. Подсчитать количество слов в строке.
2. Создать динамически массив, размером равным количеству слов и поместить в каждый его элемент индекс первой буквы каждого слова.
3. Создать динамически ещё одну такую же строку, как наша исходная строка.
4. Далее используя поиск минимального слова в цикле копировать слово во вторую строку, затем очищать соответствующий элемент массива индексов (например записав туда -1).
Как-то так.
Однозначно есть более быстрый алгоритм. Повторяю, это первое, что пришло в голову.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Всё.Училка пояснила сегодня!
Задачу нужно сделать 2 способами:стиль С и С++
Т.е. string.h использовать можно!Но в С решаем серез char, а в С++ через string(различные методы)
Задачу нужно сделать 2 способами:стиль С и С++
Т.е. string.h использовать можно!Но в С решаем серез char, а в С++ через string(различные методы)
На С++ это вообще делается элементарно. Чтение строки по словам, запись в динамический массив, сортировка - это всё имеется в стандартной библиотеке С++.
На обычном Си конечно придётся повозиться.
Если возникнут сложности, обращайся на decoder@hotbox.ru
На обычном Си конечно придётся повозиться.
Если возникнут сложности, обращайся на decoder@hotbox.ru
Поумнеть несложно, куда труднее от дури избавиться.