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

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


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

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

Выпуск № 612
от 16.12.2006, 07:35

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


Вопрос № 66332: Помогите написать задачу Найти число, повторяющееся в массиве максимальное количество раз а именно у меня порблемы когда я сравниваю числа между собой я не знаю как сделать что бы одно число само с собой не сравнивалося, и не пойму ...
Вопрос № 66348: Доброго дня суток, эксперты. Не подскажет ли кто: Возможно ли выполнить строковую переменную, на пример: AnsiString s = "ShowMessage("Hello? World!")"; в стиле #define s ShowMessage("Hello? World!&q...
Вопрос № 66403: На языке С нужно выполнить следующее: Пусть два города А и В удалены друг от друга на расстояние d=600км. В то же самое время из одного города в другой выходят поезда. Поезд из А имеет скорость v1=40 км/ч, поезд из В имеет скорость v2=60...
Вопрос № 66424: Доброго времени суток, господа! У меня такой вопрос, програмирую я в VC 2005, консоль. Нужно получить случайное число из довольного малого диапазона (1-3) за довольно быстрое время, т.е. перебирать циклом через rand(); довольно накд...
Вопрос № 66425: STL - вопрос из темноты вопрос практический и теоретический. есть список элементов обычный list и другой такой же , с таким же типом элементов. Нужно сделать перекрёстные связи между двумя списками : - например иду по одному листу вн...

Вопрос № 66.332
Помогите написать задачу

Найти число, повторяющееся в массиве максимальное количество раз

а именно у меня порблемы когда я сравниваю числа между собой я не знаю как сделать что бы одно число само с собой не сравнивалося, и не пойму как найти число, повторяющееся максимальное количество раз.ю толи ещё один массив создать и туда заносить кто сколько раз повторяется, вобщем я незнаю
Отправлен: 10.12.2006, 11:45
Вопрос задал: Андрюхаха (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mystic
Здравствуйте, Андрюхаха!
Можно массив сначала упорядочить, а потом считать будет намного проще
Пример в приложении (функцию упорядочивания написать не трудно, поэтому в примере не рассматривается).

Могут быть ошибки, не проверял, но идея должна быть понятна.

Приложение:

Ответ отправил: Mystic (статус: 3-ий класс)
Ответ отправлен: 10.12.2006, 12:47
Оценка за ответ: 5

Отвечает: Nax_pox
Здравствуйте, Андрюхаха!
В приложении решение.
Удачи!

Приложение:

Ответ отправил: Nax_pox (статус: 1-ый класс)
Ответ отправлен: 10.12.2006, 12:48
Оценка за ответ: 5


Вопрос № 66.348
Доброго дня суток, эксперты.

Не подскажет ли кто:
Возможно ли выполнить строковую переменную, на пример:

AnsiString s = "ShowMessage("Hello? World!")";
в стиле #define s ShowMessage("Hello? World!")

извините за не правильную постановку вопроса ))))
Отправлен: 10.12.2006, 14:21
Вопрос задал: CjJoker (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: V1s0r
Здравствуйте, CjJoker!

Хмм, надеюсь я тебя правильно понял :)))
Имя макро-функции EXEC_STR_PER - от балды, придумай что-нибудь получше

Если ты напишешь:
EXEC_STR_PER(s, ShowMessage("Hello? World!"))

то препроцессор подставит то, чего ты и хотел:
AnsiString s = "ShowMessage("Hello? World!")";

Только учти: минздрав предупреждает, что использование макросов может испортить нервы

Приложение:

Ответ отправил: V1s0r (статус: 1-ый класс)
Ответ отправлен: 11.12.2006, 16:44

Отвечает: John Paramol
Здравствуйте, CjJoker!
Хммм... Вам чтоли парсер нужен? Такой небольшой компилятор, заключенный в RUN_MACRO?
Ну если писать самому, на это могут уйти месяцы.
А если взять готовый, тоже придется повозиться.
Почитайте тут http://rsdn.ru/forum/Message.aspx?mid=1306051
Если же выражения для разбора всегда будут подобного рода (одна функция с одним параметром), и количество "узнаваемых" функций невелико, то тогда это легко сделать самому (никаких деревьев строить не надо). Ищите первую скобку, по ней разделяете имя функции от параметра, удаляете ненужные символы, в зависимости от имени функции передаете параметр в одну из реальных функций.
Успехов!
---------
1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 5-ый класс)
Ответ отправлен: 12.12.2006, 23:40


Вопрос № 66.403
На языке С нужно выполнить следующее:
Пусть два города А и В удалены друг от друга на расстояние d=600км.
В то же самое время из одного города в другой выходят поезда. Поезд
из А имеет скорость v1=40 км/ч, поезд из В имеет скорость v2=60 км/ч.
Одновременно из пункта А вылетает муха со скоростью V3=200 км/ч и летит
на встречу поезду В. При встрече с поездом В муха оборачивается и летит на встречу
поезду А .Как только муха достигает поезда А она опять разворачивается и летит на встречу В.
Так продолжается до тех пор пока поезда не встретятся.
Теперь задачи:
1) Определить длину различных отрезков пути,которые пролетит муха.
2) Определить общее расстояние,которое она пройдет.
Отправлен: 10.12.2006, 21:03
Вопрос задал: Respect (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Tek
Здравствуйте, Respect!
Код приводить не буду, но общий смысл решения задач с точки зрения физика (как в вашем случае) сводиться к следующим этапам:
1. Учитывая что 1 м эта сумашедшая муха пролетит менее чем за 0.02с примем что нам достаточно изучить ее метания дло того момента как поезда(лобовые стекла их кабин) сблизяться на расстояние этого метра
2. Ее телодвижения на таких исходных данных описываются затухающими гармоническими колебаниями, которые с применение м технических средств можно смоделировать с помощью бесконечного цикла, с условием прерывания в том случае, когда амплитуда колебаний достигнет этого метра или погрешности 1e-3

Далее обсчитываем каждую итерацию, учитывая, что на начало каждой нам известно расстояние между поездами и 3 постоянных скорости физических объектов. По оканчании итерации нам остается пересчитать только новое расстояние м/у поездами и учесть смену направления вектора движения мухи.

ЗЫ: Забыл - нужно еще принять размеры муху за материальную точку, а поезда свести опять же к точкамнаходящимся на нередней части их передних частей.

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 2-ой класс)
Ответ отправлен: 11.12.2006, 15:31


Вопрос № 66.424
Доброго времени суток, господа!

У меня такой вопрос, програмирую я в VC 2005, консоль.

Нужно получить случайное число из довольного малого диапазона (1-3) за довольно быстрое время, т.е. перебирать циклом через rand(); довольно накдално, так надо получать это слкчанеоч число раз в 2-3к милисекунд ( точно не помню, время исчисляеться GetTickCount();). Находил довольно много вариантов, но они либо довольно емкие по времени, либо под борланд.

Вот вопрос.

Как можно получить (псевдо) случайное число в довольно малом диапазоне в VC 2005?
Отправлен: 10.12.2006, 23:19
Вопрос задал: Desruptor (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шинтяков Дмитрий Васильевич / Ratson
Здравствуйте, Desruptor!

Не понимаю, в чём проблема...
Числа в диапазоне 0..N вполне успешно генерируются формулой

rand()%N

Она может иметь _очень_ слабую неравномерность распределения, если N не является степенью двойки.

А "перебирать циклом через rand()" - это как?
Ответ отправил: Шинтяков Дмитрий Васильевич / Ratson (статус: 2-ой класс)
Ответ отправлен: 11.12.2006, 01:16

Отвечает: ADSota
Здравствуйте, Desruptor!

Процедура из приложения будет иметь на 1Ггц процессоре время выполнения не больше 10^-7сек...

Приложение:

---------
Открыть глаза навстречу солнцу

Ответ отправил: ADSota (статус: Профессионал)
Тел.: 8-916-53-43-916
ICQ: 84611301
----
Ответ отправлен: 11.12.2006, 10:07


Вопрос № 66.425
STL - вопрос из темноты
вопрос практический и теоретический.
есть список элементов обычный list и другой такой же , с таким же типом элементов.
Нужно сделать перекрёстные связи между двумя списками :
- например иду по одному листу вниз c front() дохожу до элемента
который "связан" с другим в дргом списке и дальше иду по другому списку
стандартными средствами ,как я понял, можно только добавить удалить
вставить из одного списка в другой.
что хочу:
например
список-а а1-а2-а3-а4-а5-а6-а7-а8
список-б б1-б2-б3-б4-б5-б6-б7-б8-б9
иду по списку а (модифицированному)
а1-а2-б4-б5-а7-б9
(ну поскольку листы однотипны то вероятно можно перекинуть связь
из одного в другой)

вопросы:
1 можно ли изменить итератор (он хранится внутри или
или иммеет чисто информативный характер
облазил list.h но увы, запутался - куча наследований )
1а можноли сделать контейнер итераторов?
2. есть ли возможность реализовать затею через stl может без листа.
(чем нибудь другим)
3 реальна ли моя затея без изменения исходного текста stl ?
4. подскажите инструмент для изучения исходных текстов
(чтобы например как в IDA - дерево вызовов) +дерево классов

Спасибо за внимание

Приложение:

Отправлен: 10.12.2006, 23:33
Вопрос задал: Mixffff (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Torsten
Здравствуйте, Mixffff!

1) нет
1.а) а зачем ?
2) да, см. ниже.
3) конечно, изменение исходных текстов библиотек (и stl в том числе) нигде не приветствуется, как правило это не просто плохой стиль программирования, а очень плохой.
4) не знаю, не видел того что есть в IDA.

Что касается вопроса. У списков есть специальные предусмотренные для этого функции врезки. Они как раз и делают то что тебе нужно - переназначают внутренние указатели в списках.
list1.splice(pos, list2, iter_start, iter_end) - перемещает все элементы из интервала обозначенного итераторами iter_start, iter_end из list 2 в list1, перед позицией итератора pos в списке list1.
Это самый универсальный splice - там есть еще несколько перегруженных подобных функций.

В этом случае он переназначит указатели, и 2-ой список останется уже без этих элементов, которые были перенесены в 1-ый.
---------
#define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 11.12.2006, 11:23


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное