Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Поиск слов в строке

Автор: -NIK- 30.10.2006 20:26

Помогите выполнить задание. Оно собственно следующее.... дана строка длины до 255 с пробелами. Найти все такие слова которые составлены из тех же букв что и первое, т.е. буквы должны быть темеже, но встречаться могут чаще одного раза, а также в счёт регистр, т.е. заглавная буква или нет - они считаются разными МАМА МАМАМААА - второе слово нас устривает, т.к. состоит из тех же букв..... а вот если скажем а - маленькое, то не одно и тоже... Писать на С, компилятор Visual Studio

Автор: volvo 30.10.2006 21:43

Visual Studio не держу, на Turbo C работает:

#include <string.h>
#include <stdio.h>

int main() {

char s[255], first[20], *p, *pp;
int i;

gets(s);
/*
Функция strtok выделяет из заданной строки лексемы, разделенные одним из
символов-разделителей, заданных вторым параметром
*/
p = strtok(s, " ");
// Выделили первую лексему (первое слово), и скопировали его в переменную first
strcpy(first, p);

// Пока строка не закончится ...
while(p) {
// ... выделять очередное слово ...
p = strtok(NULL, " ");
// ... и если оно существует ...
if(p) {
/*
каждый символ этого слова проверять на входжение в первое слово
(функция strchr вернет NULL если символ НЕ был найден в строке, иначе вернется адрес символа)

Если strchr вернула адрес, а не NULL, то увеличить счетчик букв, которые совпали с
буквой из первого слова
*/
for(pp = p, i = 0; *pp; pp++) if(strchr(first, *pp)) i++;

/*
если число совпавших букв равно длине самого слова,
значит, ВСЕ буквы совпали - печатаем...
*/
if(i == strlen(p)) puts(p);
}
}
return 0;
}

Автор: Гость 30.10.2006 22:35

огромное спасибо, студия не ругается....
не мог бы ты ещё объяснить как она написана....?

Автор: Гость 30.10.2006 23:04

и если можно за что какой массив отвечает. Спасибо заранее

Автор: Гость 30.10.2006 23:08

хотел спросить, а что если условие было бы, что слово должно состоять из всех букв первого слова, т.е. все буквы должны обязательно встречаться как тогда следует и что именно изменить?

Автор: klem4 30.10.2006 23:18

Такая задача решалась http://forum.pascal.net.ru/index.php?showtopic=13177

Оно ?

Автор: Гость 30.10.2006 23:57

Да похожи, спасибо, буду знать альтернативные решения, но всё таки объясните хоть кт о- нить как выполнено это решение что за что отвечает и что делает....

Автор: volvo 31.10.2006 0:56

Читай комментарии, я добавил...