Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 4
MS SQL

Инициализация объектов данными из бд

17.03.2016, 21:11. Показов 621. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, делаю программу для навигации внутри помещения, в базе на ms sql server есть таблица с 3 столбцами: старт, финиш и расстояние. В приложении она отображается через DBGrid. Для поиска путей нашел вот такой код:


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
#include <iostream>
#include <windows.h>
using namespace std;
 
struct item { //структура для описания элемента карты
 int s,c; //начальный и конечный узлы
 int v; //"вес" пути
};
 
const int m = 9; //количество путей по графу
struct item map[m] = { //все пути, нумерация узлов с нуля
 {0,1,1}, {0,2,1}, {2,3,1}, {1,4,1}, {2,4,1},
 {4,5,1}, {4,7,1}, {5,6,1}, {6,7,1}
};
const int n = 8; //количество вершин графа
int road[n]; //номера узлов текущей "дороги"
bool incl[n]; //true, если i-ая вершина включена в путь
int way[n]; //искомый самый короткий путь
int waylen; //его длина
int start, finish; //начальная и конечная вершины
bool found;
int len; //найденный "вес" маршрута
int c_len; //текущий "вес" маршрута
 
int find (int s, int c) { //вес пути из s и c или 0, если пути нет
 for (int i=0; i<m; i++)
  if (map[i].s==s && map[i].c==c ||
      map[i].s==c && map[i].c==s) return map[i].v;
 return 0;
}
 
void step (int s, int f, int p) { //рекурсивный поиск шага пути
 int c; //номер вершины, куда делаем шаг
 if (s==f) { //путь найден
  found = true; //поставить флажок "найдено"
  len = c_len; //запомнить общий вес пути
  waylen = p; //запомнить длину пути (количество узлов)
  for (int i=0; i<waylen; i++) way[i] = road[i]; //запомнить сам путь
 }
 else { //выбор очередной точки
  for (c=0; c<n; c++) { //проверяем все вершины
   int w = find(s,c); //есть ли путь из s в c
   if (w && !incl[c] && (len==0 || c_len+w<len)) { //нужная точка не включена?
    road[p] = c; //включить точку в путь
    incl[c] = true; //пометить как включенную
    c_len += w; //учесть в общем весе пути
    step (c,f,p+1); //вызвать себя для поиска следующей точки
    road[p] = 0; //вернуть всё как было
    incl[c] = false;
    c_len -= w;
   }
  }
 }
}
 
int main () {
 //Инициализация данных:
 for (int i=0; i<n; i++) {
  road[i]=way[i]=0; incl[i] = false;
 }
 len = c_len = waylen = 0;
 
 start = 0; //начало пути - нумерация с 0
 finish = 7; //конец пути - нумерация с 0
 road[0] = start; //первую точку внесли в маршрут
 incl[start] = true; //и пометили как включённую
 found = false; //но путь пока не найден
 step (start,finish,1); //ищем вторую точку
 
 if (found) {
  cout << "Way is";
  for (int i=0; i<waylen; i++) cout << " " << way[i];
  cout << ", weight is " << len;
 }
 else cout << "Way not found!";
 cout << endl;
 system ("pause");
 return 0;
}[/SIZE][/SIZE][/SIZE]
С заданными заранее вершинами все работает, но я не могу сделать так чтобы данные брались из моей таблицы. Пытался писать что-то такое:
C++
1
2
3
4
5
6
7
8
for(int h=0;h<=Form2->ADOTable1->RecordCount;h++){
 item item1;
 item1.s=Form2->ADOTable1->FieldByName("start id")->AsInteger;
 item1.c=Form2->ADOTable1->FieldByName("finish id")->AsInteger;
 item1.v=Form2->ADOTable1->FieldByName("расстояние")->AsInteger;
 ADOTable1->RecNo=ADOTable1->RecNo+1;//переходим на следующую запись
 map[h]=item1; //добавляем в массив
 }
но ничего не получается, помогите пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2016, 21:11
Ответы с готовыми решениями:

Инициализация TImage данными из оперативной памяти
Привет! Не подскажите как инициализировать TImage данными из оперативной памяти (gif-файд), а потом сохранить на диск как jpg-файл? ...

Инициализация Класса данными
По логике книги эта инициализация ( смотреть код ) должна работать, что тут не так? // stock00.h -- Stock class interface // version 00...

Инициализация объектов
Помогите разобраться. Есть класс, в конструкторе которого присваивается ID объекту-экземпляру (переменная AnimalId). Создаю 2 объекта,...

2
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 4
21.03.2016, 01:08  [ТС]
посмотрите кто-нибудь
0
0 / 0 / 0
Регистрация: 17.11.2015
Сообщений: 4
22.03.2016, 17:01  [ТС]
Посмотрите кто-нибудь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2016, 17:01
Помогаю со студенческими работами здесь

Инициализация объектов класса
Помогите, пожалуйста написать, с этим у меня тяжко хоть это и азы... Создайте 3 экземпляра класса и инициализируйте с помощью: а)...

Инициализация массива объектов
Добрый вечер. не могу никак понять, почему массив объектов sampArray вмещает не четыре строки по два числа, а восемь строк. может и глупый...

Инициализация объектов в структуре
Нужно с помощью структуры создавать несколько объектов LabeledEdit и ComboBox, вопрос в том как и где инициализировать объекты , попробовал...

Инициализация массива объектов
Доброго времени суток, пишу я программу на &quot;тему&quot; университета и сделал массив объектов класса Students и вот возникла такая ситуация:...

Инициализация массива объектов
Уважаемые программисты, проясните ситуацию. Имеется класс CPt (точка), причем конструктор по умолчанию отсутствует. Объявление...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru