写一个简单的校园导航c++
时间: 2023-08-29 22:11:10 浏览: 188
数据结构校园导航问题课程设计
### 回答1:
以下是一个简单的c++校园导航程序,可以根据用户输入的起点和终点,输出最短路径和路线。
```cpp
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
// 存储每个点的邻接点和对应边的距离
vector<pair<int, int>> graph[1000];
// 存储每个点的最短距离和是否访问过
int dist[1000];
bool visited[1000];
// 存储路径
vector<int> path;
// Dijkstra算法求最短路
void Dijkstra(int start, int end)
{
// 初始化
for (int i = 0; i < 1000; i++) {
dist[i] = INT_MAX;
visited[i] = false;
}
dist[start] = 0;
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
pq.push(make_pair(0, start));
while (!pq.empty()) {
int u = pq.top().second;
pq.pop();
if (u == end) {
break;
}
if (visited[u]) {
continue;
}
visited[u] = true;
for (int i = 0; i < graph[u].size(); i++) {
int v = graph[u][i].first;
int w = graph[u][i].second;
if (!visited[v] && dist[u] + w < dist[v]) {
dist[v] = dist[u] + w;
pq.push(make_pair(dist[v], v));
}
}
}
}
// 输出最短路径
void printPath(int start, int end)
{
path.push_back(end);
int u = end;
while (u != start) {
for (int i = 0; i < graph[u].size(); i++) {
int v = graph[u][i].first;
int w = graph[u][i].second;
if (dist[u] == dist[v] + w) {
path.push_back(v);
u = v;
break;
}
}
}
cout << "最短路径为:";
for (int i = path.size() - 1; i >= 0; i--) {
cout << path[i];
if (i > 0) {
cout << " -> ";
}
}
cout << endl;
}
int main()
{
// 建图
graph[1].push_back(make_pair(2, 10));
graph[1].push_back(make_pair(6, 5));
graph[2].push_back(make_pair(1, 10));
graph[2].push_back(make_pair(3, 6));
graph[2].push_back(make_pair(4, 5));
graph[3].push_back(make_pair(2, 6));
graph[3].push_back(make_pair(4, 4));
graph[4].push_back(make_pair(2, 5));
graph[4].push_back(make_pair(3, 4));
graph[4].push_back(make_pair(5, 3));
graph[5].push_back(make_pair(4, 3));
graph[5].push_back(make_pair(6, 8));
graph[6].push_back(make_pair(1, 5));
graph[6].push_back(make_pair(5, 8));
// 输入起点和终点
int start, end;
cout << "请输入起点和终点(1~6):";
cin >> start >> end;
// 求最短路径
Dijkstra(start, end);
printPath(start, end);
return 0;
}
```
该程序建立了一个简单的无向图,每个点对应一个数字(1~6),通过输入起点和终点,使用Dijkstra算法求出最短路径,并输出路径。
### 回答2:
校园导航c程序功能介绍:
校园导航是一个简单的C语言程序,用于帮助用户在校园中找到不同建筑物的位置。该程序主要包括菜单功能和地点查询功能。
程序开始时,用户将看到一个主菜单,包括以下选项:
1. 显示所有建筑物及其位置
2. 查询某个建筑物的位置
3. 退出程序
如果用户选择菜单选项1,程序将显示所有建筑物及其位置的列表。列表中的每个建筑物都有一个唯一的编号和名称。用户可以通过查找这个编号或名称来了解建筑物的位置。
如果用户选择菜单选项2,程序将提示用户输入要查询建筑物的编号或名称。程序将在建筑物列表中查找与用户提供的查询信息匹配的结果,并显示该建筑物的位置。
如果用户选择菜单选项3,程序将退出。
程序实现代码示例:
```c
#include <stdio.h>
#include <string.h>
// 建筑物结构体
typedef struct {
int id;
char name[50];
char location[100];
} Building;
// 全局的建筑物列表
Building buildings[] = {
{1, "教学楼A", "A校区一号楼"},
{2, "教学楼B", "B校区三号楼"},
{3, "图书馆", "B校区五号楼"}
};
// 显示所有建筑物及其位置
void showBuildings() {
int size = sizeof(buildings) / sizeof(Building);
printf("建筑物列表:\n");
for (int i = 0; i < size; i++) {
printf("%d. %s - %s\n", buildings[i].id, buildings[i].name, buildings[i].location);
}
}
// 查询某个建筑物的位置
void searchBuilding() {
int size = sizeof(buildings) / sizeof(Building);
char query[50];
printf("请输入要查询的建筑物编号或名称:");
scanf("%s", query);
for (int i = 0; i < size; i++) {
if (strcmp(query, buildings[i].name) == 0 || atoi(query) == buildings[i].id) {
printf("%s的位置是:%s\n", buildings[i].name, buildings[i].location);
return;
}
}
printf("未找到匹配的建筑物。\n");
}
int main() {
int choice;
do {
printf("\n校园导航菜单:\n");
printf("1. 显示所有建筑物及其位置\n");
printf("2. 查询某个建筑物的位置\n");
printf("3. 退出程序\n");
printf("请选择菜单选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
showBuildings();
break;
case 2:
searchBuilding();
break;
case 3:
printf("程序已退出。\n");
break;
default:
printf("无效的选项。\n");
break;
}
} while (choice != 3);
return 0;
}
```
以上就是一个简单的校园导航C程序的实现。用户可以通过程序菜单选择查看建筑物列表或查询特定建筑物的位置。程序会根据用户的选择展示相应的结果。
### 回答3:
校园导航C是一个简单的校园导航程序,主要帮助学生和访客在校园内快速找到目的地。该程序基于C语言编写,使用了简单的文本界面。
首先,用户启动程序后,会看到一个欢迎界面,提供了校园导航的功能和快捷键说明。用户可以通过输入不同的指令来实现不同的功能。
首先,用户可以输入指令查看校园地图,程序会显示校园的平面图,并用字符表示建筑物和道路。用户可以通过地图上的编号来查找特定的建筑物。
用户还可以选择输入指令来获取建筑物的具体信息。比如,输入编号或名称,程序会返回该建筑物的相关描述,以及周围环境说明和使用注意事项。
另外,程序还提供了路径导航功能。用户可以输入起点和终点的编号或名称,程序会通过路径算法计算出最短路径,并逐步指引用户前往目的地。
此外,用户还可以输入指令来查询校园内的服务设施和活动信息。比如,用户可以输入“食堂”或“图书馆”的关键词,程序会返回相关的服务设施信息和活动安排。
最后,用户可以通过输入“退出”指令来退出校园导航C程序。
总之,校园导航C是一个简单实用的校园导航程序,可以帮助用户快速找到校园内的目的地,方便学生和访客的校园生活。该程序使用了简单的文本界面,方便用户操作和查找信息。
阅读全文