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

Программирование. Форум !!!

За 2005-11-25

Re[2]: Адваснутый Shape

Hello Neco,
Friday, November 25, 2005, 3:00:21 AM, you wrote about "Адваснутый Shape":
D>> Ищется компонент для Delphi, типа адваснутый Shape. С возможностями рисования
D>> ромбов, трапеций и проч.
> А что самому уже влом написать? 8)
Времени нет, времени... Сроки давят.
Ладно на нет и суда нет. Что - нибудь сам придумаю. Сенкс за ответ.

   2005-11-25 23:21:37 (#480616)

Re: консоль в С++

> Как в С++ из dll'ки или win-приложения открыть консоль, а потом туда
> печатать обычным printf?

AllocConsole() и далее открыть FILE* для ввода/вывода, используя имена
файлов "CONIN$" и "CONOUT$" соответственно. Только пользоваться придётся
fprintf() и fscanf(). После AllocConsole() просто начать использовать
printf()/scanf() не получится, ибо STD_xxx_HANDLE создаются для консоли
где-то в недрах AllocConsole(), тогда как stdin и stdout создаются при
старте программы/библиотеки, то есть раньше, когда консоли ещё не было.
Если же очень хочется printf()/scanf(), то можно попробовать что-то
вроде

*stdin=*freopen("CONIN$", "rt", stdin);
*stdout=*freopen("CONOUT$", "wt", stdout);

Не знаю достаточно хорошо стандарт на plain-C, но вроде там не было
запретов на изменение stdXXX-ов. Помню в Borland C++ 4.5 + PowerPack for DOS

прекрасно работало

stdin=freopen("CONIN$", "rt", stdin);

а вот в VC нет, ибо stdXXX у него не l-value почему-то. Однако в виду того,
что это библиотека к plain-C, не C++, то ИМХО не будет большой беды, если
просто перезаписать содержимое структуры поверх. Хак, конечно, но решения
проще я в своё время не нашёл. Можно перед этим сохранить старое содержимое
этих структур, например

FILE tempStdin=*stdin;

а в конце восстановить обратно:

fclose(stdin);
*stdin=tempStdin;

Всё ж не такой хак. Да и не лишне будет FreeConsole() сделать, когда не
нужна будет.

--
С уважением, boroda

Номер выпуска : 5059
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480325
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-11-25 11:47:40 (#480325)

Re: консоль в С++

> Как в С++ из dll'ки или win-приложения открыть консоль, а потом туда
> печатать обычным printf?
>

Функция GetStdHandle помогает получить дескриптор консоли, куда можно писать
с помощью WriteFile или printf. а можно еще писать с помощью WriteConsole.

Номер выпуска : 5058
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480304
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 10:46:46 (#480304)

Re[2]: Рисование графов.

Привет всем.
Ну во общем если подробнее...
Нам в универе задачу дали (Лаб) о нахождении критического пути в каких-то
там сетях. С самим алгоритмом проблем нет. (Он достаточно просто и
известен).
В саму программу вводятся работы и их продолжительность, и прешедствующие
работы. А сама программа по этим данным строит херомудрую таблицу.
Фактически данные представляются в виде именно ГРАФА! а критический путь в
виде набора работ.
Так нужно вывести этот ГРАФ (в графическом режиме), и как-нибудь выделить на
нём крит. путь.
Я бы просто расположил вершины этого графа просто по кружку, и потом бы
добился того, что бы было наименьшее количество пересечения рёбер. (Так как
граф, на самом деле не привязан какому-то положению, и его отрисовка не
принципиальна)

Ну препод придумал другой способ. (И вот как раз я не понял и не знаю как
его осуществить)
ТИпо экран делиться на n частей, и в каждом таком кусочке стоит вершина.
Также можно добавляться лишнии вершины (так сказать нулевые работы).
Например: Если нам даны 3 работы, то должно получиться примерно так.
1--\
\
4----3
/
2--/

4- нулевая работа.
Вот как не так сделать. Язык не принципиален.
З.ы Я надеюсь, что кто-нибудь сталкивался с этим и знает как. Препод сказал
что такой алгоритм отрисовки ГРАФОВ весьма известен.

Номер выпуска : 5057
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480293
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 10:21:40 (#480293)

Re[2]: Рисование графов.

Здравствуйте, Neco,

N> Если граф, это всё-таки график, а не титул, то существует вроде как
N> ограниченное количество видов графиков ИЗВЕСТНОЙ длины, а в общем
N> случае их длина бесконечна.

Вообще-то ГРАФ и ГРАФИК - это совершенно разные понятия.
ГРАФИК - это визуальная интерпретация функции.
ГРАФ - (определения не знаю) это представление иерархической
структуры, например дерево. ГРАФов существует несколько видов, сейчас
уже благополучно забыл.
Есть даже теория ГРАФов, насколько я помню. Разработаны механизмы
(теоретические и практические) подъема и прохода по ГРАФам.

   2005-11-25 06:51:20 (#480235)

консоль в С++

Хой!
Как в С++ из dll'ки или win-приложения открыть консоль, а потом туда
печатать обычным printf?

Номер выпуска : 5055
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480232
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 06:35:24 (#480232)

Re: Адваснутый Shape

Здарова, DarkSide!!!

D> Ищется компонент для Delphi, типа адваснутый Shape. С возможностями рисования
D> ромбов, трапеций и проч.
А что самому уже влом написать? 8)
Между прочим этим грешат многим дельфийцы - чуть что, сразу ищёт
компонент. Даже если задача элементарная.

D> Будет использоваться для рисования блок-схем.
Тем более. Пишешь контрол, с возможностью выбора одной из (к примеру)
четырёх форм: прямоугольник, эллипс, треугольник, трапеция. Ещё один
контрол - стрелка всё это соединяющая. Уверен, если начнёшь и у тебя
уже есть кое-какой опыт работы с gdi на оба контрола уйдёт никак не
больше двух дней. А скорее один.

Номер выпуска : 5054
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480231
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 06:34:10 (#480231)

Re: Рисование графов.

Здарова, Гера!!!

Г> У меня вот возникла такая проблема: мне нужно нарисовать ориентированный
Г> граф, заведомо не известной длинны.
Если граф, это всё-таки график, а не титул, то существует вроде как
ограниченное количество видов графиков ИЗВЕСТНОЙ длины, а в общем
случае их длина бесконечна.
Да и ваще граф - это любое графическое изображение, поэтому под твоим
вопросом может скрываться даже "как мне распечатать jpg-картинку"!
Что за прикол считать всех тут телепатами?
Конкретнее. На чём пишешь? Что за граф? Где рисовать?

Г> Знающие люди подсказали, что для этого существуют уже готовые алгоритмы.
Да. К примеру, y=sin(x).

Г> Может быть кто-нибудь знает как?
Может кто-то и знает, но он не поймёт твоего вопроса, если у него как
раз сейчас не идут лекции на эту тему.

Г> Или какой-нибудь ресурс в ИНЕТЕ подскажет?
www.google.com

Номер выпуска : 5053
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480230
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 06:32:15 (#480230)

Re[5]: Персечение фигур

Здарова, Шистеров!!!

ШП> Есть код на ЛИСПе
Дык значит это на ЛИСПе сравнение дольше, чем операция?
Или вообще везде?
С трудом вериться, что везде. Точнее не вериться совсем. 8)
Откуда такая информация?

Счас вот даже не поленился попробовать и этот код:

int a=5;
int b=3;
int t1=GetTickCount();
for (int i=0; i<1000000000;++i){
a=b;
/*
if (a<b){
a=b;
}//*/
}
printf("%d",GetTickCount()-t1);
getc(stdin);
return 0;

показал, что в обоих случаях результат отличается незначительно.
И сравнение и приравнивание длиться где-то 0.2 секунды.

Номер выпуска : 5052
Возраст листа : 796 (дней)
Количество подписчиков : 551
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/480229
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-11-25 06:30:44 (#480229)