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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
В "while(" опечатка: надо "*pW" вместо просто "pW". 18.08.05 09:58  Число просмотров: 2110
Автор: 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





Рейтинг@Mail.ru


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