Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
OMG
Зарегистрирован: 19.12.2005 Сообщения: 1
|
Добавлено: Пн Дек 19 2005 19:30 Заголовок сообщения: Ребят, решал задачку на строки, зашел в тупик... |
|
|
Помогите плз. Вот решал задачку зашел в тупик, запарился искать ошибки,решал заново-опять ошибки.
Разделитель — один из символов « ,.;:!?"'» (начиная с пробела и заканчивая апострофом). Буква — любой символ, отличный от разделителя. Слово — последовательность букв, ограниченная с каждой стороны разделителем или концом строки. Например, в строке «x9i23!слово, ,» два слова — «x9i23» и «слово».
Требуется произвести одно из следующих действий (при всех манипуляциях со словами разделители сохранять без изменений):
удалить все слова, которые начинаются и заканчиваются одной и той же буквой, и продублировать все остальные слова. |
|
Вернуться к началу |
|
|
Aragaer
Зарегистрирован: 28.03.2005 Сообщения: 164
|
Добавлено: Вт Дек 20 2005 08:33 Заголовок сообщения: |
|
|
Код: | while (strlen(string+pos)) {
nextspace = strbrk(string+pos, spaces) - string; //spaces - строка разделителей
if(nextspace==0) { // перед нами разделитель
strncat(newstring, string+pos, 1);
pos++;
continue;
}
if(string[pos] != string[nextspace-1]) {
strncpy(string+pos, newstring, nextspace-pos);
strncpy(string+pos, newstring, nextspace-pos);
}
pos = nextspace;
} |
Примерно так. Еще рассмотреть случаи с последним словом (отлавливается по отрицательному nextspace), не забыть добавить нулевой байт в конце newstring. Ну и по мелочи. _________________ Open your eyes.
And Awaken. |
|
Вернуться к началу |
|
|
|