Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Обучение и начало програмирования на С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Открыть новую тему     Написать ответ в эту тему

STEEL



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, у меня есть программка которая слушает порт, необходимо одновременно слушать допустим два порта, как запустить несколько циклов?
ЗЫ: пока что работаю над тем, чтобы в одном цикле слушать несколько портов, но это пока не обсуждается :-P  
Интересна многопоточность.

Всего записей: 2293 | Зарегистр. 06-01-2002 | Отправлено: 18:35 01-11-2005
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
STEEL

Цитата:
как запустить несколько циклов?

В смысле потоков?
Наиболее просто делать один поток на порт и в нём организовывать "слушанье". Потом прото запускаеш несколько потоков, передав им в качестве параметра номер порта. Для уменьшения кол-ва глюков в будующем сразу делай всё роботу с портом внутри потока.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 20:23 01-11-2005
STEEL



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
Спасибо конечно. Но в юниксе это не так актуально. Написал на Си программку, слушает одновременно несколько портов, если кому интересно, могу кинуть.
 
Кто-нибудь писал на Си клиента для работы с субд Firebird ?

Всего записей: 2293 | Зарегистр. 06-01-2002 | Отправлено: 22:00 02-11-2005
WWWovan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Можно ли каким-то образом удалить из вектора обьектов std::vector один из элементов?То что я почитал насчет удаления через erase у меня реализовать не получилось...

----------
Не несу ответственность за случайно допущенные орфографические ошибки.

Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 15:29 03-11-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WWWovan

Цитата:
через erase у меня реализовать не получилось...  

в смысле?

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 15:47 03-11-2005
WWWovan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex
Вопрос снят. Обошелся без erase. Создав промежуточный масив....

----------
Не несу ответственность за случайно допущенные орфографические ошибки.

Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 17:06 03-11-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WWWovan

Цитата:
. Создав промежуточный масив....

а зачем так сложно? - я так и не понял в чем проблема - erase до сегодняшнего дня работал нормально

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 17:18 03-11-2005
WWWovan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex
В "Н.Джосьютис - C++ стандартная библиотека. Для профессионалов" указано, что векторы не поддерживают прямого удаления элементов с некоторым значением. Для этой цели используеться алгоритм. Для моего случая(удалить элемент с определенным индексом) алгоритм не завелся... Хотя возможно что-то неправильно понял...


----------
Не несу ответственность за случайно допущенные орфографические ошибки.

Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 17:25 03-11-2005
WiseAlex



Софтовых дел М...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WWWovan

Цитата:
удалить элемент с определенным индексом)

вектор удаляет не по индексу, а по итератору, т.е.
std::vector<SomeType>  vec;
...
vec.erase(vec.begin()+index);//удаляем элемент с индексом index  

Цитата:
удаления элементов с некоторым значением

для этого используют связку remove+erase
Удачи

Всего записей: 1001 | Зарегистр. 02-03-2003 | Отправлено: 17:44 03-11-2005
WWWovan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
WiseAlex
Спасибо. Возьму на заметку.

----------
Не несу ответственность за случайно допущенные орфографические ошибки.

Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 18:18 03-11-2005
Zexes



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Пишу курсняк в институт. Нужно написать прогу на тему "Броуновское Движение". Нужно сделать поле, в нем будут мегать точки ударяться друг об друга, об стенки и т.д.
Какой учебник мне поможет в этом деле и если можно ссылки, у самомого несколько учебников дома, но инфы по данной теме нет

----------
С уважением, Дмитрий.

Всего записей: 557 | Зарегистр. 19-06-2002 | Отправлено: 02:12 04-11-2005
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zexes, правильно ли я понял, что тебе нужен учебник, в котором изучение С++ идёт на примере написания программы "Броуновское движение"? Лольная шутка, нечего сказать
На самом деле тебе надо:
а) разобраться с С++ вообще
б) разобраться со средой (что у тебя там, Builder или MSVC?..)
в) разобраться с отрисовкой того, что хочется нарисовать (у тебя точки; вероятнее всего просто в канве "лежать" будут)
г) разобраться с алгоритмами и их реализацией (чтобы двигать точки и определять момент их "столкновения")
 
Кстати, можно и не отслеживать столкновение - просто сказать, что у тебя всё строится в объёме и точки пролетают мимо друг друга

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 10:43 04-11-2005
Zexes



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xarde
а) с С++ вообще разобрался
б) все делаю в mcvs 2003
 
C остальным вот очень и интересно разобраться.
Цитата:
разобраться с алгоритмами и их реализацией (чтобы двигать точки и определять момент их "столкновения")  

вот именно это я и хочу найти, в каких учебниках есть эти алгоритмы?

Цитата:
Кстати, можно и не отслеживать столкновение - просто сказать, что у тебя всё строится в объёме и точки пролетают мимо друг друга  

дык, нет, наоборот интересно подумать над столкновениями

Цитата:
Zexes, правильно ли я понял, что тебе нужен учебник, в котором изучение С++ идёт на примере написания программы "Броуновское движение"? Лольная шутка, нечего сказать  

Понял не правильно, перечитал свой пост, но так и не понял, как ты пришел к такому заключению

----------
С уважением, Дмитрий.

Всего записей: 557 | Зарегистр. 19-06-2002 | Отправлено: 23:37 04-11-2005
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вот именно это я и хочу найти, в каких учебниках есть эти алгоритмы?

А самому слабо подумать и сделать алгоритм? Сомневаюсь, что есть такие книжки, где автор в качестве примера рассматривает именно Броуновское движение.
 

Цитата:
дык, нет, наоборот интересно подумать над столкновениями

Ну так и отслеживай, в чём проблема? Трудно сравнить координаты двух точек?
 

Цитата:
так и не понял, как ты пришел к такому заключению

Это у меня скилл такой - понимать всё по-своему Иногда помогает, а иногда и мешает

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 22:11 05-11-2005
Zexes



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Xarde

Цитата:
А самому слабо подумать и сделать алгоритм? Сомневаюсь, что есть такие книжки, где автор в качестве примера рассматривает именно Броуновское движение.  

Хм, мне бы пока научиться делать просто двигающиеся точки, с остальным сам разберусь.
Цитата:
Ну так и отслеживай, в чём проблема? Трудно сравнить координаты двух точек?  

А че такой недовольный? Тебя лично никто ничего не заставляет делать. Не хочешь - не пиши.

----------
С уважением, Дмитрий.

Всего записей: 557 | Зарегистр. 19-06-2002 | Отправлено: 00:34 06-11-2005
Xarde



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Хм, мне бы пока научиться делать просто двигающиеся точки, с остальным сам разберусь

Тогда сделай так. Делаешь цикл на n итераций (чтобы не было бесконечности; лучше, конечно, бесконечный и засунуть его в поток, обрабатывая в главном нажатия кнопок и отрисовку). В цикле рассчитываешь новые координаты точек (чуть ниже объясню) и делаешь ProcessMessages для отрисовки. Перед циклом надо инициализировать список точек, их векторов (куда будут "лететь") и начальных координат вектора (откуда вылетает; нужно, если тебе не хочется иметь углы 45 градусов и приятнее видеть полёт под любым углом). Инициализацию нетрудно сделать используя генератор случайных чисел.
 
Расчёт новых координат. Берём начальную координату вектора. Смотрим, что меньше отличается от текущей координаты точки (X или Y), подставляем его в простенькую формулу получения новых координат (по пропорции ищем Y для Х+1). Стираем старую точку, рисуем новую.
 
Столкновения отслеживай сам. Скажу лишь, что при столкновении надо менять вектор и его начальную точку.
 

Цитата:
А че такой недовольный?

А недовольный я потому, что человеку (тебе) думать не хотелось. Ладно, не принимай близко к сердцу. Прошу прощения, ежели мои слова задели.

Всего записей: 266 | Зарегистр. 06-07-2003 | Отправлено: 10:40 06-11-2005
sverhmonstr



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
if ( (fp = fopen("base.txt", "r+")) == NULL)
        puts("\tNo database created yet.");

Если файл есть, он открывается для чтения и записи. Если файла нет, он создаётся. Так должно быть, по идее. Но у меня, если файла не существует, 1)новый не создаётся 2)программа "вылетает".
Подскажите, пожалуйста, решение
 
Добавлено:
+ в догонку. Файл содержит массив структур, поблочно. Вопрос: как удалить одну из структур массива из файла + сместить остальные назад?
Заранее спасибо

Всего записей: 405 | Зарегистр. 27-01-2002 | Отправлено: 20:44 13-11-2005
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sverhmonstr

Цитата:
как удалить одну из структур массива из файла + сместить остальные назад?  

Вручную.

Цитата:
Если файл есть, он открывается для чтения и записи. Если файла нет, он создаётся. Так должно быть, по идее. Но у меня, если файла не существует, 1)новый не создаётся 2)программа "вылетает".  

В режиме "r+" файл должен существовать, и не создаётся.
(http://www.butovo.com/~zss/cpp/input.htm)
Используй режим "a", а потом fseek() для перемещения.
 
Добавлено:
sverhmonstr
Это на чистом С.
Можно это ещё и на С++ сделать.

----------
Это не подпись.

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 21:50 13-11-2005
sverhmonstr



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KADABRA
Спасибо, с созданием разобрался. Подвела книжка, с описанием значений аргументов fopen()  (
С удалением тоже разобрался, сделал, хотя, наверное, не наиболее оптимально.
Спасибо ещё раз

Всего записей: 405 | Зарегистр. 27-01-2002 | Отправлено: 23:15 13-11-2005
WWWovan



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста где почитать на русском о TPaintBox?
Заранее благодарен.

----------
Не несу ответственность за случайно допущенные орфографические ошибки.

Всего записей: 578 | Зарегистр. 15-11-2003 | Отправлено: 13:25 14-11-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Обучение и начало програмирования на С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru