Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148

Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)

07.06.2014, 13:10. Показов 3213. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, помогите)
Нужно запилить это в С++ билдер)

В консоли без проблем) Однако в билдер, что бы на форме мы вводили все нужные даные, а оно нам выводило лишь результат окончательный(который мы выбираем цифрами)

Вот сам листинг программы. Помогите)
C++
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 #include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define word unsigned int
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
 
 
 
int i, j, n, p, xn, xk;
int flag[11];
word c[11][11], l[11];
char s[80], path[80][11];
int min(int n)
{
 int i, result;
for(i=0;i<n;i++)
if(!(flag[i])) result=i;
for(i=0;i<n;i++)
if((l[result]>l[i])&&(!flag[i])) result=i;
return result;
}
word minim(word x, word y)
{
if(x<y) return x;
return y;
}
void main()
{
cout<<"Vvedit` kil`kist` tochok: ";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++) c[i][j]=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
cout<<"Vvedit` vidstan` vid x"<<i+1<<" do x"<<j+1<<": ";
cin>>c[i][j];
}
cout<<" ";
for(i=0;i<n;i++) cout<<" X"<<i+1;
cout<<endl<<endl;
for(i=0;i<n;i++)
{
printf("X%d",i+1);
for(j=0;j<n;j++)
{
printf("%6d",c[i][j]);
c[j][i]=c[i][j];
}
printf("\n\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(c[i][j]==0) c[i][j]=65535; //безкінечнність
cout<<"Vvedit` pochatkovi tochku: ";
cin>>xn;
cout<<"Vvedit` kincevi tochku: ";
cin>>xk;
xk--;
xn--;
if(xn==xk)
{
cout<<"Pochatkova i kinceva tochku spivpadayut`."<<endl;
getch();
return;
}
for(i=0;i<n;i++)
{
flag[i]=0;
l[i]=65535;
}
l[xn]=0;
flag[xn]=1;
p=xn;
itoa(xn+1,s,10);
for(i=1;i<=n;i++)
{
strcpy(path[i],"X");
strcat(path[i],s);
}
do
{
for(i=0;i<n;i++)
if((c[p][i]!=65535)&&(!flag[i])&&(i!=p))
{
if(l[i]>l[p]+c[p][i])
{
itoa(i+1,s,10);
strcpy(path[i+1],path[p+1]);
strcat(path[i+1],"-X");
strcat(path[i+1],s);
}
l[i]=minim(l[i],l[p]+c[p][i]);
}
p=min(n);
flag[p]=1;
}
while(p!=xk);
if(l[p]!=65535)
{
cout<<"Shljah: "<<path[p+1]<<endl;
cout<<"Dovjuna shljahy: "<<l[p]<<endl;
}
else
cout<<"takogo shljahy ne isnye!"<<endl;
getch();
 
 
 
 }
 
 
//---------------------------------------------------------------------------
Добавлено через 14 часов 5 минут
Ап)
Все же, не особо разбираюсь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2014, 13:10
Ответы с готовыми решениями:

Поиск оптимальных путей в графе
Нужно сделать библиотеку классов на тему Графов та поиска оптимальных путей. У меня есть задача, в которой реализован поиск опт.путей. Но...

Поиск оптимальных путей по Днепропетровску на общественном транспорте
Здравствуйте. Мне нужен ваш совет. Я немного опоздал с выбором темы курсовой (на 2 недели) и эта одна из оставшихся тем. Реально ли будет...

Из консоли в VCL Forms
Помогите пожалуйста переписать код в VCL Forms Для чисел Х и У определить, являются ли они корнями уравнения А*Р^4+D*P^2+C=0. ...

35
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 11:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от maximuss Посмотреть сообщение
просто копипаст в билдере не выходит
Все и входит и выходит Начинал делать проект на RAD XE3, потом увидел, что ты работаешь на 6 билдере, создал там новый проект и скопировал все компоненты с формы RAD на форму 6-ки. Все свойства прекрасно сохранились. Осталось создать обработчики событий (их там всего 3), дописать в *.h файл функцию - и все.
Цитата Сообщение от maximuss Посмотреть сообщение
куда мои данные вводить
Показываю с картинками:
1. Вводишь кол-во точек и нажимаешь ВВОД. Открывается второй этап (рис.1)
2. Когда будешь готов вводить значение, давишь кнопку "Начать ввод" (рис.2)
3. Вводишь значения между точками, указанными над полем ввода и давишь ВВОД (рис.3)
4. Повторяешь ввод столько раз, сколько имеется неповторяющихся пар точек (чем больше количество, тем больше пар точек)
5. Как только количество пар точек исчерпано - появляется таблица с введенными тобой расстояниями (рис.4) Открывается этап 3.
6. Выбираешь начальную и конечную точки, нажимаешь "Расчет" - появляется метка с расстоянием между выбраными тобой точками (рис.5)
7. Если точки при выборе совпали - предупреждение (рис.6)

По сути все то же самое, что и в приведенной тобой консольной программе
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)   Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)   Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  

Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)   Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)   Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  

0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 12:05
Ну вот, открыл твой же проект из 13-го поста.
На главной форме поместил кнопку "Левая кнопка", привязал к ней новую форму, скопипастил все из своего пректа, запустил.
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 12:12
Лучший ответ Сообщение было отмечено maximuss как решение

Решение

Вот твой же модифицированный проект
Вложения
Тип файла: rar 1.rar (938.6 Кб, 7 просмотров)
1
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
10.06.2014, 14:23  [ТС]
Спасибо, но вот смотрите. В итоге программа должна суммировать все пути между избранными точками и выводить самый кратчайший путь. Как именно переделать, что бы оно так выводилось?
Смотрите, 4 точки (1-2-3-4)
Начальная 1,последняя 4. Так как это граф, все они между собой связаны . Мы вводим все дданные, оно определяет самый кратчайший путь.
А ведь результат может быть 1-2-4.
Простите, но как и что изменить что бы оно работало так?

И еще... Помимо длины(расстояние) мне нужно что бы так же были пинг, загруженного и затухание. Это нужно еще размерности делать матрицы и вводить переменные, а потом просто копипастить для кнопки?
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 16:39

Не по теме:

См. А.С. Пушкин "Сказка о рыбаке и рыбке"
... Хочу новое корыто
... Хочу новую избу
... Хочу быть столбовою дворянкой
... и т.д.


Ты бы уже объяснил, что надо конкретно... Старт-пост был перевести консоль на форму
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
10.06.2014, 17:23  [ТС]
Простите меня пожалуйста.
Я немного не тот листинг в начале кинул, там ведь только на путь, а вот в посте №1 на этой странице уже правильный листинг. Там по тому же самому принципу(тоже самое только не один путь, но и пинг и загруженность линии) вычисляются.
В идеале хотелося б, что бы после введения точек, мы выбирали за чем будем искать(пинг, загруженность, скорость или расстояние), а дальше вот все как вы делали. ТАк же само, поиск кратчайшего пути.
________________________________________ ________________________________________ __________________

А вот по поводу самой задачи. Простите еще раз, но посмотрите скрин. В консоли оно ищет минимальный путь по расстоянию, а в вашей версии, выводиться тот, где меньше всего точек. То есть, на прямую с начальной и до конечной точек . Это хотелось бы как-то исправить.
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 19:38
Ну понимаешь ли, я не Лобачевский, поэтому не совсем понимаю, смотря на чертеж, как это одна сторона треугольника может быть больше чем сумма двух других сторон (0_1 = 2m, 1_2 = 3m, 0_2 = 60 m). И, опять же, разве
Цитата Сообщение от maximuss Посмотреть сообщение
минимальный путь по расстоянию
это не то же самое что
Цитата Сообщение от maximuss Посмотреть сообщение
на прямую с начальной и до конечной точек
???

Добавлено через 4 минуты
Кстати, выложи, если можешь, скрин работы правильной консольной программы. (Если честно, я только по скрину, который ты ранее выложил, и разобрался, что прога должна делать)
1
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
10.06.2014, 19:39  [ТС]
Да, тут вы абсолютно правы. Еще раз спасибо.
А не могли бы вы подсказать что сделать, что бы выводило пинг, загрузку линии таким образом, как я описал? Пожалуйста=(

Добавлено через 30 секунд
Ща выложу
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
10.06.2014, 19:48  [ТС]
Вот. Только там скорость ищет минимальную вместо максимальной(
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
10.06.2014, 20:08
maximuss, мне очень неудобно об этом говорить, но в данном случае возникает некоторый языковой барьер. Не мог бы ты перевести в нужной консольной программе фразы типа "Dovjuna shljahy", "Zavantajenist" ну и т.д. на русский? Уж прости нас, москалей
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
10.06.2014, 23:04  [ТС]
Та это вы меня извините, не хотелось ставить вас в неловкое положение.
Dovjuna Sljahy - длина пути, расстояние. Вы уже это сделали в примере=)
А второе это уровень загруженности линии между точками. В %
Shvydkist=скорость интернета на линии.

Добавлено через 2 часа 43 минуты
Не сочтите за дерзость, но не могли бы вы сказать, сможете ли помочь с этой программой ?
А то мои продвижения в билдере слишком медлительны, боюсь не успею.
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
11.06.2014, 08:37
Ok, из командировки завтра вернусь - посмотрю.
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
11.06.2014, 12:23  [ТС]
Ох, мне послезавтра сдавать)
Ну тогда буду ждать вас, спасиб)

Добавлено через 24 минуты
А пока буду дальше пытаться завершить задачу
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
12.06.2014, 06:34
Вот держи, переделал.
Надеюсь, что в свой проект сейчас добавить не возникнет проблем?
Вложения
Тип файла: rar 6.rar (355.0 Кб, 10 просмотров)
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
12.06.2014, 11:58  [ТС]
Что-то матрица пустая, комбобокс 3 пустой, но результат в конце выводит. Что то делаю не так

Добавлено через 18 минут
Когда в свою форму ложу
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
12.06.2014, 12:02
В комбобокс надо данные ввести в Object Inspector-е. (свойство Items). А потом, когда выбираешь значение в КомбоБоксе - отрисовываются выбранные данные в таблице.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2014, 12:02
Помогаю со студенческими работами здесь

Перевести приложение с консоли на VCL Forms Application
Здравствуйте, уважаемые знатоки с++! Помогите, пожалуйста, перевести приложение с консоли на нормальное оконное. В приложении Soft1.rar...

Поиск кратчайшего пути от точка 1 до точки n, пройдя все остальные точки
в общем такая задача, есть n точек. и расстояние от каждой точки до других. как найти минимальное расстояние от точки 1 до точки n. можете...

Поиск кратчайшего пути из точки А до точки В на шахматной доске шагом коня
Всем привет. Я новичек в программировании. Большую сложность вызвала задача в которой необходимо найти кратчайший путь из точки А до...

Поиск кратчайшего пути от точки А до точки В
Всем добрый день!)Нужен совет. Реализовал алгоритм для поиска кратчайшего пути от т.А до т.В.,но оказалось,что он не идеален. Вот...

На графике отметить асимптоты, точки экстремума, точки перегиба, точки пересечения с осями координат
Что-то выходит не совсем правильный график. clc; clear all; close all; l = -10; r = 10; N = 1000;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru