информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медАтака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
В "while(" опечатка: надо "*pW" вместо просто "pW". 18.08.05 09:58  Число просмотров: 1810
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 18.08.05 10:39  Количество правок: 2
<"чистая" ссылка>
И еще. В предположении того, что обрабатывается простой текст, в котором встречаются слова с аналогичными приставками, корнями и даже суффиксами, но отличающимися окончаниями, быстрее будет сравнивать с шаблоном начиная с конца, чтоб не тратить время на проверку совпадающей части слова.
<beginners>
вопрос по C 17.08.05 20:08  
Автор: YoungNigga Статус: Незарегистрированный пользователь
<"чистая" ссылка>
я книгу читаю по C. автор сказал, типа в качестве упражнения написать функцию, которая в данном тексте находит данную подстроку. в принципе сделал, только немного коряво получилось - подгонять пришлось по ходу. вот код:
int find_substring(char*text, char*word)
{
int count=0;
int c;
int len_w=strlen(word);
int len_t=strlen(text);
for(int i=0;i<len_t;i++)
{
if(text[i]==word[0])
{
c=0;
while(c<len_w&&text[i]==word[c])
{
i++;
c++;
}
if(c==strlen(word))
count++;
i--;
}
}
return count;
}
я просто адрес автора не нашел, потому сюда пишу. может если время и желание у кого есть свою версию написать, чтоб я посмотрел или совет дать. заранее спасибо
если уж писать это вручную... 17.08.05 20:29  
Автор: dl <Dmitry Leonov>
Отредактировано 18.08.05 10:44  Количество правок: 2
<"чистая" ссылка>
то strlen не нужен, достаточно сравнивать с нулем. И счетчики избыточные, тот же внутренний while записывается гораздо элегантнее, если работать через указатели:

char* pT = text;
char* pW = word;

.....
while(*pW && (*pT++ == *pW++));

вместо

> c=0;
> while(c<len_w&&text[i]==word[c])
> {
> i++;
> c++;
> }

(кстати, в этом цикле не хватает проверки на выход за границу текста)

Остальной код аналогично, его лучше написать самому, чтобы прочувствовать работу со строками через указатели.
В "while(" опечатка: надо "*pW" вместо просто "pW". 18.08.05 09:58  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 18.08.05 10:39  Количество правок: 2
<"чистая" ссылка>
И еще. В предположении того, что обрабатывается простой текст, в котором встречаются слова с аналогичными приставками, корнями и даже суффиксами, но отличающимися окончаниями, быстрее будет сравнивать с шаблоном начиная с конца, чтоб не тратить время на проверку совпадающей части слова.
угу 18.08.05 10:40  
Автор: dl <Dmitry Leonov>
<"чистая" ссылка>
спасибо 17.08.05 21:30  
Автор: YoungNigga Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach