Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 748
от 24.05.2007, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 483, Экспертов: 69
В номере:Вопросов: 5, Ответов: 10


Вопрос № 87487: Добрый день. Подскажите пожалуйста как можно реализовать алгоритм Кнута, Мориса и Пратта. Мой мэйл - grot.86@mail.ru...
Вопрос № 87493: Можно ли к проекту добавить свои шрифты, которые будут отображаться и на других машинах?...
Вопрос № 87531: Здраствуйте Пытаюсь с помощью удаленных потоков внедриться в процесс, но ничего не выходит. CreateRemoteThread вызывается нормально в hThread чего-то записывает. Но DllEntryPoint не вызывается. Помогите plz найти ошибку...
Вопрос № 87560: Здравствуйте ув. коллеги! Такой вопрос: есть класс, в котором в качестве переменной - имя объекта этого класса. Что нибудь типа этого: class GeomObject { public: char name[128]; } Я перегружаю оператор <...
Вопрос № 87563: Здравствуйте эксперты! Есть программа (игровой движок) в которой должен проигрываться звук. Функция воспроизведения будет работать в отдельном потоке. Как можно организовать управление этим потоком? Т.е. должна быть возможность запу...

Вопрос № 87.487
Добрый день. Подскажите пожалуйста как можно реализовать алгоритм Кнута, Мориса и Пратта. Мой мэйл - grot.86@mail.ru
Отправлен: 18.05.2007, 13:23
Вопрос задал: KOTOV ALEKSANDR IVANOVICH (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Sov
Здравствуйте, KOTOV ALEKSANDR IVANOVICH!
Суть алгоритма:
Пользователь вводит шаблон word в тексте выделяется некоторое слово slovo. Далее к слову
word#slovo применяется алгоритм КМП(# спец символ не встречающийся на в word на в slovo)
Далее следуя алгоритму КМП строится массив l. word бедет подстрокой в slovo тогда и только тогда, когда в массиве l есть число равное длине word.
Подробнее-в интернете. Привожу код взятый опять же в интернете

Приложение:

Ответ отправил: Sov (статус: 3-ий класс)
Ответ отправлен: 18.05.2007, 17:39
Оценка за ответ: 5
Комментарий оценки:
Ответ полностью раскрывает суть вопроса.

Отвечает: kool
Здравствуйте, KOTOV ALEKSANDR IVANOVICH!
См. приложение. Сам не проверял - взято и нета.
Удачи!

Приложение:

---------
I am.

Ответ отправил: kool (статус: Студент)
Ответ отправлен: 18.05.2007, 22:54

Отвечает: Olegzp
Здравствуйте, KOTOV ALEKSANDR IVANOVICH!
даю статью но она на Pascal думаю разберешся
сточник http://ric.uni-altai.ru/Fundamental/pascal1/lab15/l15-teor.htm

Приложение:

Ответ отправил: Olegzp (статус: 2-ой класс)
Ответ отправлен: 20.05.2007, 12:55


Вопрос № 87.493
Можно ли к проекту добавить свои шрифты, которые будут отображаться и на других машинах?
Отправлен: 18.05.2007, 14:04
Вопрос задал: WraiZ (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Sov
Здравствуйте, WraiZ!
Включите шрифты в файл ресурсов.
Для временной регистрации шрифтов в системе используется функция AddFontResource
Для удаления RemoveFontResource

Приложение:

Ответ отправил: Sov (статус: 3-ий класс)
Ответ отправлен: 18.05.2007, 17:25


Вопрос № 87.531
Здраствуйте
Пытаюсь с помощью удаленных потоков внедриться в процесс, но ничего не выходит. CreateRemoteThread вызывается нормально в hThread чего-то записывает. Но DllEntryPoint не вызывается. Помогите plz найти ошибку

Приложение:

Отправлен: 18.05.2007, 17:54
Вопрос задал: Sov (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: kool
Здравствуйте, Sov!
Скорее всего нужно указывать полное имя библиотеки.
Т.е. - полный путь до нее.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 19.05.2007, 11:53
Оценка за ответ: 3
Комментарий оценки:
Спасибо за ответ, проблема решена. В dll надо экспортировать какую-нибудь функцию. Тогда все нормально работает. Хотя я не понимаю почему 1 вариант не работал


Вопрос № 87.560
Здравствуйте ув. коллеги!

Такой вопрос: есть класс, в котором в качестве переменной - имя объекта этого класса. Что нибудь типа этого:

class GeomObject
{
public:
char name[128];
}

Я перегружаю оператор < (меньше) для использования сортировки по именам (sort для std::vector):

bool GeomObject::operator < (const GeomObject & g)
{
char *pt1 = name, *pt2 = g.name;

do
{
if (*pt1 > *pt2) return false;
if (*pt1 < *pt2) return true;
}
while (*pt1++ && *pt2++);

return (*pt2);
}

На что компилятор выбрасывает ворнинг:
warning #144: a value of type "const char *" cannot be used to initialize an entity of type "char *"

Как написать, чтобы было правильно?
Отправлен: 18.05.2007, 21:37
Вопрос задал: Ross (статус: 9-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 10)

Отвечает: Mystic
Здравствуйте, Ross!
bool GeomObject::operator < (const GeomObject & g)
Объект g у Вас является константой, т.е. все его члены нельзя будет изменять (становятся const). А в строке char *pt2 = g.name; подразумевается, что pt2 может изменять то, что находится по адресу g.name. Поэтому компилятор выдает ошибку. Просто измените эту строку на
const char *pt1 = name, *pt2 = g.name;
Так должно заработать.
И просто совет: *pt2++, лучше все-таки написать *(pt2++), поскольку так все намного понятнее (для удобства чтения кода), поскольку далеко не всем это очевидно.
Удачи.
Ответ отправил: Mystic (статус: 6-ой класс)
Ответ отправлен: 18.05.2007, 22:10
Оценка за ответ: 5
Комментарий оценки:
Спасибо, так работает. Ток непонятно почему компилятору пофиг изменение const char * pt2 (в строке *(pt2++))

Отвечает: Ilkras
Здравствуйте, Ross!
попробуйте casting:
char *pt2 = (char *)g.name;
Ответ отправил: Ilkras (статус: 10-ый класс)
Ответ отправлен: 19.05.2007, 01:05
Оценка за ответ: 4
Комментарий оценки:
Такой каст не проходит... Видимо потому что g.name все равно остается членом константного объекта const GeomObject g

Отвечает: Терсков Сергей
Здравствуйте, Ross!

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

return (*pt2);

когда функция возвращает bool. И если вы используете STL, то к чему все эти премудрости ? Гораздо проще использовать код подобный коду в приложении.

Приложение:

Ответ отправил: Терсков Сергей (статус: 9-ый класс)
Ответ отправлен: 21.05.2007, 02:47

Отвечает: Sergey A. Wedensky
Здравствуйте, Ross!

А по-моему проще вообще заменить Ваше сравнение строк на вызов strcmp(). Она и принимает const char*, да и работает по-любому быстрее - на асме написана.
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 21.05.2007, 09:56


Вопрос № 87.563
Здравствуйте эксперты!

Есть программа (игровой движок) в которой должен проигрываться звук. Функция воспроизведения будет работать в отдельном потоке.

Как можно организовать управление этим потоком? Т.е. должна быть возможность запуска определенного трека в бэкграунде, звуков, отвечающих событиям игры. Кроме того нужна обратная связь: поток должен сигнализировать, когда трек заканчивается и т.п.
Отправлен: 18.05.2007, 21:46
Вопрос задал: Ross (статус: 9-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: kool
Здравствуйте, Ross!
Для этого используются объекты
синхронизации потоков такие как
События, Мьютексы, критические секции, семафоры.
Но это очень большая тема. Ее здесь не объять.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 18.05.2007, 22:51
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Видимо стоит полистать Рихтера... Напишите, если не сложно, в форум пару ссылок по теме.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное