Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++ Builder] Сетевой график с библиотекой VCL, Графический метод сетевого планирования  
V
    Опции темы
xIxFastDeaThxIx
  Дата 1.12.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



Я студент уже как 4го курса учусь хорошо всё понимаю что объясняют на парах, пропуски только по болезни. Но тут нам задали курсовую работу по Математическим методам (при всём при том что нас многому из етой курсовой даже необучали) нашол идентичное задание из Украинского ВУЗа, всю теорию я уже сделал осталось программу и блок схему нашол в инете картинку программы тута но ни скачки ни листинга так и ненашол, очень хотелось бы научиться делать такую-же smile, если кто умеет работать с VCL библиотеками и можно ли сделать чтоб программа работала для любого сетевого графика (нахождение мощности начального потока, максимальный поток, "узкое место" -> критический путь) помогите мне пожалуйста а то уже 5 недели до 2 часов ночи сижу, немогу найти хотябы примеров решений эдаких задач, заранее СПАСИБО тем кто хотябы займётся моей трудной задачкой smile 
PM MAIL   Вверх
xvr
Дата 1.12.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Сделать такую с нуля - очень и очень нетривиальная задача. Советую поискать готовые компоненты к Delphi/Builder (это и есть VCL  smile ), которые умеют рисовать графы. Начать можно с www.torry.ru
PM MAIL   Вверх
xIxFastDeaThxIx
Дата 1.12.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



ето BoxedApp демо версию качать?
PM MAIL   Вверх
xvr
Дата 1.12.2009, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Это - пошуровать на torry.ru и поискать VCL компоненты с FWS статусом (где то тут и тут)


PM MAIL   Вверх
dumb
Дата 2.12.2009, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 6
Всего: 158



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 
PM MAIL   Вверх
xIxFastDeaThxIx
Дата 3.12.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



чото я короч совсем затупил, накачал себе книжек и семплов, похожее на мою задачу есть только в Visual C++ или как его там, щас постараюсь сделать что-нибуть на нём (хоть я его впервые вижу) если кто умеет на Visual писать помогите плиз.
PM MAIL   Вверх
xIxFastDeaThxIx
  Дата 6.12.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



Щас после пьянок гулянок уселся доделать прогу вот мой листинг посмотрите мне кажется что громоско но хотябы более похоже на правду, заблудился в StrToFloat FloatToStr IntToStr и т.д. smile 
Цитата

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if ((to2->Text<to5->Text)&&(to2->Text<to6->Text)) //to2 , to5 и т.д. ето Edit я для удобства переименовал
{
FloatToStr(sum)=to2->Text;
}
else if ((to5->Text<to2->Text)&&(to5->Text<to6->Text))
{
FloatToStr(sum)=to5->Text;
}
else if ((to6->Text<to2->Text)&&(to6->Text<to5->Text))
{
FloatToStr(sum)=to6->Text;
}
//==============================================================
if ((to3->Text<to52->Text)&&(to3->Text<to6->Text))
{
FloatToStr(sum2)=to3->Text;
}
else if ((to52->Text<to3->Text)&&(to52->Text<to6->Text))
{
FloatToStr(sum2)=to52->Text;
}
else if ((to6->Text<to3->Text)&&(to6->Text<to52->Text))
{
FloatToStr(sum2)=to6->Text;
}
//=============================================================
if (to3->Text<to62->Text)
{
FloatToStr(sum3)=to3->Text;
}
else if (to62->Text<to3->Text)
{
FloatToStr(sum3)=to62->Text;
}
//=============================================================
if (to4->Text<to63->Text)
{
FloatToStr(sum4)=to4->Text;
}
else if (to63->Text<to4->Text)
{
FloatToStr(sum4)=to63->Text;
}
//=============================================================
summa=(sum)+(sum2)+(sum3)+(sum4);
if (Button1->Enabled)
{
Label8->Caption=FloatToStr(summa);
}
}
//---------------------------------------------------------------------------


тут расписаны мои высчеты максимального потока в сети
вот кстати как я сделал само окошко проги
user posted image

Это сообщение отредактировал(а) xIxFastDeaThxIx - 6.12.2009, 17:46
PM MAIL   Вверх
xvr
Дата 6.12.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Компилировать пытался? Мне кажется, что оно не соберется - уж очень дико выглядит  smile 
Да и до 'любого сетевого графика' тут ОЧЕНЬ далеко.

Давай сначала выясним, насколько 'любой' должен быть 'сетевой график' (я так понимаю, что под этим термином подразумевалась конфигурация сети).

Кстати, а визуальную часть от вас требуют? Т.к. она потянет гораздо больше, чем собственно нахождение максимальных потоков и пр.

PM MAIL   Вверх
xIxFastDeaThxIx
  Дата 6.12.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



визуальную часть ты видиш сам весь график вручную печатал=) по x y прогресс бары с таймером связал, на компиляцию запускал всё нормально только в лейбл 0 выводит
PM MAIL   Вверх
xvr
Дата 6.12.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Цитата(xIxFastDeaThxIx @ 6.12.2009,  19:36)
визуальную часть ты видиш сам весь график вручную печатал=) 

Это я заметил  smile Других графиков не ожидается? Или для других графиков будет другая программа?

Цитата

на компиляцию запускал всё нормально только в лейбл 0 выводит
То, что в лэйбл выводит 0 это не удивительно, удивительно то, что оно вообще откомпилировалось  smile 

Эта конструкция
Код

if ((to2->Text<to5->Text)&&(to2->Text<to6->Text))
сравнивает ТЕКСТ в 2х лэйблах, а не числа, которые этот текст представляет. Нужно как минимум делать так
Код

if ((to2->Text.toDouble()<to5->Text.toDouble())&&(to2->Text.toDouble()<to6->Text.toDouble()))

Далее, конструкция
Код

FloatToStr(sum)=to2->Text;
вообще делает непонятно что, надо
Код

sum=to2->Text.toDouble();

PM MAIL   Вверх
xIxFastDeaThxIx
Дата 6.12.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



насчёт разнообразных графиков я переспросил у препода, сказал что можно сделать с изменением значений дуг(рёбер) т.е. с етим разобраться надо. И что делает ф-ция toDouble? я впервые её вижу для справки можно обьяснить плиз?=)
вроде считает только получается много...надо всётаки разобраться с плавающей точкой

Добавлено через 6 минут и 28 секунд
скидываю прогу мот кто допоймёт мои деяния smile 

Это сообщение отредактировал(а) xIxFastDeaThxIx - 6.12.2009, 22:25

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  C_________.rar 396,55 Kb
PM MAIL   Вверх
xvr
Дата 7.12.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Код просто фиеричный  smile Препа удар хватит (если он конечно не Индус)  smile 
Цитата

И что делает ф-ция toDouble?
Преобразует строку в double
Цитата

насчёт разнообразных графиков я переспросил у препода, сказал что можно сделать с изменением значений дуг(рёбер)
Только значений или наличия или отсуствия их вообще? В частности - мжно ли менять набор узлов и можно ли менять набор дуг? Если можно, то советую сразу застрелится - редактирование графа в GUI задача на ПОРЯДОК более сложная, чем подсчет всего того, чего от вас хотят.

PM MAIL   Вверх
xIxFastDeaThxIx
  Дата 8.12.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



Только значения (в Edit) которые набор дуг и их кол-во менять ненадо сетевой график остаётся неизменным, щас работаю над правельным подсчётом максимального потока (нам преподавали одним способом а в инете я вижу совсем другое и больно трудный способ с какими то замутами)
я вёл подсчёД с конспектов ну типа так 

Выбираем произвольные пути из I к S
1)1-2-5-6 = min Cij = 6,3 значит от всего пути отнимаем 6,3 и т.д.
2)1-3-6=min Cij = 8,2
3)1-4-6 min Cij = 5,3
Max = 19,8

т.е. Минимальная пропускная способность каждого потока вычитается из всего пути(остатки пропускной способности (если есть таковые)могут быть пропускной способностью для другого потока).
ну у меня получилось что 19,8 это максимальный поток smile я уже сам запутался
P.S. несмотрите как написан код сёравно пакеты скину да с .exe показывать буду(математические методы как ни как)мне важен щас результат smile 

Это сообщение отредактировал(а) xIxFastDeaThxIx - 8.12.2009, 19:14
PM MAIL   Вверх
xvr
Дата 8.12.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: нет
Всего: 223



Если 'математические методы как ни как' то и надо делать математическими методами:
  •  Явно закодировать граф, дуги и веса на них (а не размазывать это все по программе)
  •  На полученном графе явно запускать алгоритмы, вычисляющие то, что надо
  •  Эти алгоритмы потребуют разных процедур обхода графа - написать их явно, в виде процедур.
В том, что есть сейчас опознать какие либо алгоритмы практически невозможно  smile 


PM MAIL   Вверх
xIxFastDeaThxIx
  Дата 9.12.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 5.7.2009

Репутация: нет
Всего: нет



ну и что мне теперь делать ? smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.