Розділ IV. АЛГОРИТМИ
Окремі записи вводяться в базу даних за допомогою методу assert_flight(), а всю інформацію про рейси ініціалізує метод setup(). Код потрібних методів:
/*Ініціалізація бази даних рейсів*/ void CFind::setup(void)
{
assertFlight("Kyev", "Lviv", 544); assertFlight("Lviv", " Tchernigiv", 701); assertFlight("Kyev", "Tchernigiv", 151); assertFlight("Kyev", "Vinnitsa", 266); assertFlight("Vinnitsa", "Donetsk", 812); assertFlight("Vinnitsa", "Simferopol", 801); assertFlight("Vinnitsa", "Lviv", 369); assertFlight("Tchernigiv", "Gitomir", 297); assertFlight("Tchernigiv", "Odessa", 634); assertFlight("Odessa", "Simferopol", 473); assertFlight("Donetsk", "Simferopol", 571);
}
/*Запам'ятати дані в базі*/
void CFind::assertFlight(char *from, char *to, int dist)
{
CFl *fl=new CFl(from, to, dist); flight.push_back(fl);
}
Для написання коду, що виконує пошук маршруту з Києва в Сім- ферополь, потрібні кілька допоміжних методів. По-перше, метод для визначення наявності рейсу між двома містами. Цей метод назвемо match(); він повертає відстань між двома містами, якщо такий рейс є, і нуль, якщо такого рейсу немає:
/*Якщо між двома містами є рейс, то повертається відстань між ними, інакше повертається 0.*/
int CFind::match(char *from, char *to)
{
for (vector<CFl*>::iterator t=flight.end()-1; t!=flight.begin(); t--)
if(!strcmp((*t)->m_sFrom, from) && !strcmp((*t)->m_sTo, to)) return (*t)->m_iDist;
return 0; /*не знайдено*/
}
Іншим необхідним методом є find(). Він шукає в базі даних будь- який рейс із зазначеного міста. Якщо рейс з яким-небудь іншим міс-