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

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

07.06.2014, 13:10. Показов 3189. Ответов 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 3
10.06.2014, 12:05
Ну вот, открыл твой же проект из 13-го поста.
На главной форме поместил кнопку "Левая кнопка", привязал к ней новую форму, скопипастил все из своего пректа, запустил.
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 3
10.06.2014, 16:39

Не по теме:

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


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

А вот по поводу самой задачи. Простите еще раз, но посмотрите скрин. В консоли оно ищет минимальный путь по расстоянию, а в вашей версии, выводиться тот, где меньше всего точек. То есть, на прямую с начальной и до конечной точек . Это хотелось бы как-то исправить.
Миниатюры
Переделать из консоли в VCL Forms (поиск оптимальных путей от точки А до точки Б)  
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 3
11.06.2014, 08:37
Ok, из командировки завтра вернусь - посмотрю.
0
0 / 0 / 1
Регистрация: 24.04.2012
Сообщений: 148
11.06.2014, 12:23  [ТС]
Ох, мне послезавтра сдавать)
Ну тогда буду ждать вас, спасиб)

Добавлено через 24 минуты
А пока буду дальше пытаться завершить задачу
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,404
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru