Вопрос № 79372: Здравствуйте!
Подустим мне надо записать в фаил последовательности из 17, 18, 19 бит.
Допустим из 17 бит я смогу записать два байта но тогда один бит неудел, а переделывать его в байт т.е. записывать как 00000001 мне нельзя. далее мне ндо буд...Вопрос № 79377: Здравствуйте. У меня лабораторная работа по Структурам и алгоритмам обработки данных.
В системе бронирования авиационных билетов имеется следующая информация:
1) перечень рейсов;
2) список пассажиров на каждый рейс;
3) очередь...Вопрос № 79391: Добрый день.
Пытаюсь программно установить, а затем через время запустить службу (см. приложение). В менеджере у службы постоянно висит статус "запуск" - дальше дело не идет.
Но устанавливая вручную через консоль [FGPathName].E...Вопрос № 79394: После того как я создал и откомпилировал программу, файлы формата exe, сразу же после открытия закрываются. Если открывать программу через VC++ 6, то она нормально открывается. Как сделать чтобы программы открывались?...Вопрос № 79395: Здравствуйте эксперты
Подскажите пожалуста, какие средства есть в Microsoft Studio 6 и 2005 для вывада следующих графических фарматов:
1 JPG
2 Gif - анимация
Как записать изображение в JPG файл с заданным качаством.
Зара...Вопрос № 79396: После того как я создал и откомпилировал программу, файлы формата exe, сразу же после открытия закрываются. Если открывать программу через VC++ 6, то она нормально открывается. Как сделать чтобы программы открывались?...Вопрос № 79406: Привет всем!
Нужно объеденить два списка L1 и L2 в список L3 (см приложение.)
Или просто добавить L2 к L1 без повторения элементов из L1.
Все компилится, но в список L3 ничего не добавляется.
Как разрулить?
..
Вопрос № 79.372
Здравствуйте!
Подустим мне надо записать в фаил последовательности из 17, 18, 19 бит.
Допустим из 17 бит я смогу записать два байта но тогда один бит неудел, а переделывать его в байт т.е. записывать как 00000001 мне нельзя. далее мне ндо будет записывать такие последовательности... помогите как мне это сделать
Отправлен: 22.03.2007, 16:15
Вопрос задал: Tatarin (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: V1s0r
Здравствуйте, Tatarin!
Байт - наименьшая единица, по крайней мере при работе с файлами.
Можешь, к примеру сделать так.
1) Создаешь объект std::bitset (на крайняк - тупо массив char, но лучше bitset)
2) записываешь в него биты, сколько хочешь
3) записываешь в файл размер объекта bitset (т.е. количество бит, находящихся там) функцией std::bitset::size()
4) записываешь в файл сам объект bitset
При чтении, ты уже догадался, что нужно делать. Сначала узнаем размер, создадим объект bitset и считаваем в него нужное кол-во битов.
Путей реализации много. Или придётся немного повозится с побитовыми операторами или воспользоватся std::bitset::to_string...
Может кто из экспертов знает лучший способ? Было бы интересно узнать.
Для меня ещё непротоптанная тропа bitset и ostream_iterator. Возможно ли это? Тогда всё упростится до безобразия.
Ответ отправил: V1s0r (статус: 3-ий класс)
Ответ отправлен: 22.03.2007, 17:29
Отвечает: Ilkras
Здравствуйте, Tatarin!
я думаю - это невозможно. API поддерживает запись целого количества байт и, если я не ошибаюсь, файловая система ориетнирована на целое количесто байт (или больших блоков). Так что в лоб эту проблему не решишь.
С другой стороны можно "помнить" последний записаный бит в последнем байте файла и добавлять. Соответственно надо считать последний байт, подвинуть указатель записи назад на один байт, модифицировать последний байт и добавить новые байты и записать это все обратно в файл.
Модифицировать последний считаный байт будет проще всего побитно в цикле (модифицируя соответственно маску) типа: while(i++) mybyte |= (1<<i) & (newValue << someShift). someShift надо вычислять отдельно, поскольку выши новые данные начнутся наверное в первого бита, а писать вы захотите не с первого, т.е. если начальный сдвиг j, то someShift = j+i
Ответ отправил: Ilkras (статус: 5-ый класс)
Ответ отправлен: 22.03.2007, 19:26
Отвечает: kool
Здравствуйте, Tatarin!
В файл нуно записывать только те байты которые
уже ПОЛНОСТЬЮ заполнены необходимыми битами.
Тот байт, кот. еще не заполнен нуно оставлять в
какой-нибудь переменной и когда будет получена
следующая порция данных - заполнить этот байт
необходимыми битами и записать его в файл.
Последний неполный байт в потоке - просто записать в файл.
Удачи!
--------- I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 22.03.2007, 20:42
Вопрос № 79.377
Здравствуйте. У меня лабораторная работа по Структурам и алгоритмам обработки данных.
В системе бронирования авиационных билетов имеется следующая информация:
1) перечень рейсов;
2) список пассажиров на каждый рейс;
3) очередь пассажиров в случае, когда число заявок на билеты превышает количество мест. при бронировании имя пассажира вносится в список соответствующего рейса либо включается в очередь на данный рейс. Организовать в основной памяти указанную информацию. Перед включением в любой список провести проверку на отсутствие пассажира в данном списке. Обеспечить бинарный поиск нужного рейса и хеширование очередей пассажиров при выполнении запроса на бронирование. Ограничить величину каждой очереди количеством мест
на соответствующем рейсе.
Не пойму, для чего здесь хэширование и если оно здесь действительно нужно, то как его организовать(точнее какой вид хэширования). Спасибо.
Хеширование вам тут может понадобится при поиске (хотя подозреваю что с вашими объемами данных можно было бы и не парится Ж:-), но это лабораторная значит надо).
Оно нужно для того что бы при поиске не сравнивать с все строки подрят с образцом снова и снова.
Вид хеширования можно выбрать(как я подозреваю) самый примитивный. Например каждой строке можно сопоставить чисто которое получается путем суммирования всех элементов строки.
Конечно хеши некоторыйх строк в таком случае могут совпадать. Например строки "abc" и "bca" и "cba" и так далее будут иметь одинаковую хеш фунцию. Это называется коллизии.
И теперь вместо того что бы при поиске просто сравнивать строку поиска и строку с текущим пассажиром, сначала сравниваются хеши строк. И только после того если хеши совпадают, сравниваются сами строки, что бы быть избежать коллизий. Что при больших объемах данных должно дать прирост производительности.
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 23.03.2007, 16:04
Вопрос № 79.391
Добрый день.
Пытаюсь программно установить, а затем через время запустить службу (см. приложение). В менеджере у службы постоянно висит статус "запуск" - дальше дело не идет.
Но устанавливая вручную через консоль [FGPathName].EXE /install , а затем запуская в менеджере - всё работает.
Как правильно программно запустить службу?
Приложение:
Отправлен: 22.03.2007, 18:19
Вопрос задал: Dadrum (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: ramok
Здравствуйте, Dadrum!
Пример запуска сервиса в MSDN
http://msdn2.microsoft.com/en-us/library/ms686315.aspx
от себя добавлю что было бы неплохо посмотреть что у вас возвращает StartService() как минимум, что бы понять чего не хватало.
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 23.03.2007, 15:43 Оценка за ответ: 4 Комментарий оценки: StartService возвращает не 0 - всё ок (пишется лог)
Вопрос № 79.394
После того как я создал и откомпилировал программу, файлы формата exe, сразу же после открытия закрываются. Если открывать программу через VC++ 6, то она нормально открывается. Как сделать чтобы программы открывались?
Отправлен: 22.03.2007, 18:46
Вопрос задал: Baltazar (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: kool
Здравствуйте, Baltazar!
Либо запускай свою прогу в Far-е (просмотр вывода CTRL+O),
либо напиши перед закрывающейся скобкой ф-ции main так
getch();
А там где записаны
#include <- что-то -.h>
напиши
#include
Удачи!
--------- I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 22.03.2007, 20:42
Отвечает: Ilkras
Здравствуйте, Baltazar!
Поскольку вы не написали что ваша программа делает трудно предположить сколько времени она должна жить. Предположу что вы пишете о консольной аппликации. Может быть она выполняет себя и выгружается из памяти. В среде разработки программа запускается в консоли, которая не будет закрываться пока вы не нажмете клавишу. Можно добавить в конец вашей программы вызов функции getch() и тогда выполнив себя программа будет ждать ввода одного символа. Соответсвенно консоль останется открытой пока вы не введете этот символ.
Надеюсь, что ответил на ваш вопрос. Если нет - пишите.
Ответ отправил: Ilkras (статус: 5-ый класс)
Ответ отправлен: 23.03.2007, 11:05
Вопрос № 79.395
Здравствуйте эксперты
Подскажите пожалуста, какие средства есть в Microsoft Studio 6 и 2005 для вывада следующих графических фарматов:
1 JPG
2 Gif - анимация
Как записать изображение в JPG файл с заданным качаством.
Заранее благожарен
Отправлен: 22.03.2007, 18:48
Вопрос задал: Melamed (статус: 10-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, Melamed!
Нужно использовать какую нибуть библиотеку для работы с изображениями. Самая популярная открытая библиотека например ImageMagick.
http://www.imagemagick.org/script/binary-releases.php#windows
вот ссылка на то как скачать.
http://www.imagemagick.org/script/api.php
различные интерфейсы библиотеки где можно выбрать пример
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 23.03.2007, 00:39 Оценка за ответ: 5 Комментарий оценки: Спасибо. Вроде то, что мне нужно. Буду разбираться.
Отвечает: estiGi
Здравствуйте, Melamed!
И еще посомтрите такую либу , как gdiplus
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 23.03.2007, 01:42 Оценка за ответ: 5 Комментарий оценки: Спасибо. Буду разбираться. Я в ее сторону уже присматриваюсь
Вопрос № 79.396
После того как я создал и откомпилировал программу, файлы формата exe, сразу же после открытия закрываются. Если открывать программу через VC++ 6, то она нормально открывается. Как сделать чтобы программы открывались?
Приложение:
Отправлен: 22.03.2007, 18:49
Вопрос задал: Baltazar (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: ramok
Здравствуйте, Baltazar!
на выбор:
1. запускайте ваше приложение из консоли (из cmd.exe)
2. запускайте ваше приложение из консольного файлового мененжрера (например FAR)
3. сделайте ярлык на вашу программу и в свойствах ярлыка укажите свойство не закрывать консоль после окончания программы
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 22.03.2007, 19:18
Отвечает: Shkiperr
Здравствуйте, Baltazar!
Существует команда System("Pause");
Просто в конце каждого текста программ добавляйте строчку, закрываться не будет(не для всех компиляторов подходит).
Ответ отправил: Shkiperr (статус: 3-ий класс)
Ответ отправлен: 23.03.2007, 00:14
Отвечает: estiGi
Здравствуйте, Baltazar!
перед закрытием можно прописать функцию ожидания getch () (она требует подключения conio.h)
Напрмиер:
void main ()
{
... bla-bla
printf ("Press any key to continue...
");
getch ();
}
А вообще эта функция ждет нажатия любой клавиши в консоли и возвращает ее код.
Ответ отправил: estiGi (статус: Студент)
Ответ отправлен: 23.03.2007, 01:46
Вопрос № 79.406
Привет всем!
Нужно объеденить два списка L1 и L2 в список L3 (см приложение.)
Или просто добавить L2 к L1 без повторения элементов из L1.
Все компилится, но в список L3 ничего не добавляется.
Как разрулить?
Приложение:
Отправлен: 22.03.2007, 19:20
Вопрос задал: kool (статус: Студент)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: ramok
Здравствуйте, kool!
если при вызове set_union() L3 будет расширятся, то тогда такое не сработает.
необходимо использовать.
set_union(L1.begin(),L1.end(),L2.begin(),L2.end(), inserter(L3, L3.begin()));
http://core.org.ua/tmp/set_union.C.html
исходный код
http://core.org.ua/tmp/set_union.C
PS
если вы в будущем предоставлять готовый пример, а не сляпаный на коленке или взятый кусочно из другой программы, было бы очень любезно с вашей стороны. это бы явно повысило интерес отвечающих найти решение вашего вопроса Ж:-)
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 22.03.2007, 23:45 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ!