Страница 1 из 1
Длина пути между городами
Добавлено: 18 янв 2014, 19:29
romanu416
Прошу помощи в решении задачи.
Я не могу поняты как это сделать потому прошу вашей помощи.
Надо найти путь который прошел автомобиль, мы пишем через какие города он ехал, а программа находит путь который он прошел.
1.Данные расстояния между городами для примера.
Львов-Киев = 300
Тернополь-Львов = 100
Харьков-Львов = 400
Киев-Тернополь = 350
Киев-Харьков = 150
Тернополь-Харьков = 450
2.Приклад ввода:
Львов
Киев
Харьков
3.вивид:
450
Re: Длина пути между городами
Добавлено: 20 янв 2014, 18:39
Romeo
Идём по списку посещённых городов, причём берём города парами. К примеру, если городов было указано N, то проходим мы так:
Код: Выделить всё
Цикл i от 1 до N-1
{
Годод1 = Города[i];
Город2 = Города[i+1];
}
Теперь мы должны поискать в табличке рассрояний между городами либо пару Город1-Город2, а если не нашли, то пару Город2-Город1. В случае удачного поиска берём соответствующее расстояния и добавляем к перменной, аккумулирующей сумму расстояний.
Для второй части не могу написать алгоритм даже на псевдоязыке, так как не знаю, как хранятся данные в таблице расстояний. Если пользователь строки расстояний вводит руками, то для того, чтобы получить нужные данные, придётся немного повозиться, находя в полной строке начало второго города и начало позиции, где указано расстояние. Но в любом случае, ничего сверхъестественного в задаче нет.
Re: Длина пути между городами
Добавлено: 21 янв 2014, 11:14
WinMain
Вначале нужно создать массив с именами городов. Например так:
Код: Выделить всё
char* cities[] =
{
“Киев”,
“Харьков”,
“Львов”,
“Тернополь”
};
Города при этом будут проиндексированы, и маршрут движения можно описывать не словами, а цифрами. Примерно так: 1, 0, 2, что будет означать «Харьков — Киев — Львов».
Расстояние между городами лучше описать в виде квадратной матрицы, размерность которой соответствует числу городов. В нашем случае это 4х4. В языке С/С++ это будет описываться как двумерный массив чисел. Ну вот как-то так:
Код: Выделить всё
int intervals[4][4] =
{
{0, 150, 300, 350},
{150, 0, 400, 450},
{300, 400, 0, 100},
{350, 450, 100, 0},
};
В итоге расстояние для маршрута 1 — 0 — 2 будет вычисляться как