Прошу помощи в решении задачи.
Я не могу поняты как это сделать потому прошу вашей помощи.
Надо найти путь который прошел автомобиль, мы пишем через какие города он ехал, а программа находит путь который он прошел.
1.Данные расстояния между городами для примера.
Львов-Киев = 300
Тернополь-Львов = 100
Харьков-Львов = 400
Киев-Тернополь = 350
Киев-Харьков = 150
Тернополь-Харьков = 450
2.Приклад ввода:
Львов
Киев
Харьков
3.вивид:
450
Длина пути между городами
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Идём по списку посещённых городов, причём берём города парами. К примеру, если городов было указано N, то проходим мы так:
Теперь мы должны поискать в табличке рассрояний между городами либо пару Город1-Город2, а если не нашли, то пару Город2-Город1. В случае удачного поиска берём соответствующее расстояния и добавляем к перменной, аккумулирующей сумму расстояний.
Для второй части не могу написать алгоритм даже на псевдоязыке, так как не знаю, как хранятся данные в таблице расстояний. Если пользователь строки расстояний вводит руками, то для того, чтобы получить нужные данные, придётся немного повозиться, находя в полной строке начало второго города и начало позиции, где указано расстояние. Но в любом случае, ничего сверхъестественного в задаче нет.
Код: Выделить всё
Цикл i от 1 до N-1
{
Годод1 = Города[i];
Город2 = Города[i+1];
}
Для второй части не могу написать алгоритм даже на псевдоязыке, так как не знаю, как хранятся данные в таблице расстояний. Если пользователь строки расстояний вводит руками, то для того, чтобы получить нужные данные, придётся немного повозиться, находя в полной строке начало второго города и начало позиции, где указано расстояние. Но в любом случае, ничего сверхъестественного в задаче нет.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Вначале нужно создать массив с именами городов. Например так:
Города при этом будут проиндексированы, и маршрут движения можно описывать не словами, а цифрами. Примерно так: 1, 0, 2, что будет означать «Харьков — Киев — Львов».
Расстояние между городами лучше описать в виде квадратной матрицы, размерность которой соответствует числу городов. В нашем случае это 4х4. В языке С/С++ это будет описываться как двумерный массив чисел. Ну вот как-то так:
В итоге расстояние для маршрута 1 — 0 — 2 будет вычисляться как
Код: Выделить всё
char* cities[] =
{
“Киев”,
“Харьков”,
“Львов”,
“Тернополь”
};
Расстояние между городами лучше описать в виде квадратной матрицы, размерность которой соответствует числу городов. В нашем случае это 4х4. В языке С/С++ это будет описываться как двумерный массив чисел. Ну вот как-то так:
Код: Выделить всё
int intervals[4][4] =
{
{0, 150, 300, 350},
{150, 0, 400, 450},
{300, 400, 0, 100},
{350, 450, 100, 0},
};
Код: Выделить всё
intervals[1][0] + intervals[0][2];