| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > "[C++] Работа со строками" |
| Автор: Fedor1989 9.12.2007, 13:18 |
| Помогите написть лабу. Дана строка символов.Распечатать слова, отличные от последнего ,оставив в каждом слове только первые вхождение каждой буквы. например: строка символов: "Весна наступила птицы прелетели" на экран должно выводится "Весна наступил птицы прелти" |
| Автор: Fedor1989 17.12.2007, 14:18 |
| может бать кто-нибудь идею поткинет |
| Автор: mr.Anderson 17.12.2007, 15:05 | ||
| Могу дать только идею. И написать код, но на паскале, т.к. С++ уже подзабыл. Если надо, выложу. Добавлено через 5 минут и 49 секунд В общем, вот паскалевский вариант. Если сишники зайдут, перепишите на С++.
Добавлено через 11 минут и 32 секунды Идея работы. 1. Заводим логический массив от 0 до 255, куда гарантированно влезут все символы. В нем будем хранить индикатор, был ли данный символ в данном слове. 2. Получаем строку. 3. Пробегаемся по ней посимвольно. 4. Если текущий символ - пробел (разделитель слов), то: 4.1. Пробегаемся по логическому массиву, сбрасывая все элементы на False. 4.2. Выводим пробел. 4.3. Прерываем цикл и продолжаем его со следующей итерации (continue). 5. Если текущий символ - НЕ пробел (т.е. НЕ разделитель слов), и по индексу кода данного символа в нашем логическом массиве стоит False, т.е. этого символа еще не было в данном слове, то: 5.1. Выводим данный символ. 5.2. В логический массив (опять же, по индексу кода данного символа в таблице ASCII) выставляем True. Вот и весь алгоритм работы. Более оптимального варианта я не вижу. |
| Автор: Fedor1989 17.12.2007, 20:55 |
| мне бы на C++ а то я не силен в pascal |
| Автор: mr.Anderson 17.12.2007, 22:15 |
| Я на С++ не смогу, уже не помню. Я дал идею. Мож сам справишься с кодом? Он прям пошагово описан. |
| Автор: Fedor1989 27.12.2007, 20:27 | ||
вот надумал код только он ничего не выводит
|
| Автор: Fedor1989 28.12.2007, 12:01 |
| помогите отыскать ошибку |