Utilisation de la programmation vocale C pour interroger l'itinéraire du métro

Questions et réponses du rseoc 2022-05-14 13:22:48 阅读数:849

utilisationlaprogrammationvocalepour

Je ne sais pas. Pas très exigeant Trouve une idée.

Choix des sujets24、Le système d'interrogation du métro de Chengdu suppose que Chengdu a été construit10Les métros forment un réseau de métros,Le système doit être appliqué à la machine d'interrogation à l'entrée du métro..Le but de la procédure est de permettre aux voyageurs de consulter les stations de métro,Prix des billets,Informations sur l'heure, etc.Le programme exige que ces informations soient stockées dans des fichiers,Calcul automatique des transferts et des prix de départ et de destination.La méthode de calcul a le chemin le plus court,Choix du temps, etc..La facilité d'utilisation du programme doit être prise en compte dans le processus.,Le programme fournit une table de plate - forme à l'utilisateur pour sélectionner le point de départ et la destination.Structure des données de la plate - forme,Y compris les tarifs、Nom de la station、Prochain arrêt,Plate - forme de transfert et autres informations.Chaque fil de terre est stocké dans une structure de liste liée,Élément par structure de plate - forme.Lors de la requête de l'utilisateur,Le nom de la station et d'autres informations de chaque ligne de métro peuvent être imprimés à l'écran pour que l'utilisateur puisse les voir en un coup d'oeil




Adopter les réponses:

Le noyau devrait être la réalisation de l'algorithme de chemin le plus court:
Demo

#include<stdio.h> #define SIZE 110 #define INF 1000000; int map[SIZE][SIZE]; //Stockage de la matrice de contiguïté int len[SIZE]; //d[i]Indique le point source àiLa distance de ce point int visit[SIZE]; //Si le noeud est accessible int n,m; int dijkstra(int from, int to){ //Du point source au point cible int i; for(i = 1 ; i <= n ; i ++){ //Initialisation visit[i] = 0; // Au début, il n'y avait pas d'accès len[i] = map[from][i]; // Supposons d'abord la distance entre le point source et les autres points } int j; for(i = 1 ; i < n ; ++i){ // Effectuer un calcul minimal pour chaque point à l'exception du point source int min = INF; // Enregistrement minimum len[i] int pos; // Petit record len[i] Point for(j = 1 ; j <= n ; ++j){ if(!visit[j] && min > len[j]){ pos = j; min = len[j]; } } visit[pos] = 1; for(j = 1 ; j <= n ; ++j){ if(!visit[j] && (len[j] > (len[pos] +map[pos][j]))){ //SijLe noeud n'a pas été accédé&&j Chemin le plus court du noeud vers le noeud source >pos Chemin le plus court du noeud vers le noeud source +posNode tojChemin du noeud len[j] = len[pos] + map[pos][j]; //Mise à jourj Chemin le plus court du noeud vers le noeud source } } } return len[to];} int main () { int i,j; // scanf("%d%d",&n,&m); //Saisie des données n = 6; //Données d'essai m = 9; for(i = 1 ; i <= n ; ++i){ // Disons qu'au début, chaque point n'est pas accessible for(j = 1 ; j <= n ; ++j){ map[i][j] = INF; } } /* int a,b,c; //Saisie des données for(i = 1 ; i <= m ; ++i){ scanf("%d%d%d",&a,&b,&c); map[a][b] = map[b][a] = c; } */ map[1][2] = 7; //Données d'essai map[1][3] = 9; map[1][6] = 14; map[2][3] = 10; map[2][4] = 15; map[3][6] = 2; map[5][6] = 9; map[4][5] = 6; map[3][4] = 11; int temp = INF; for(i = 1 ; i <= n ; ++i){ for(j = 1 ; j <= n ; ++j){ if(map[i][j] == temp) map[i][j] = map[j][i]; } } int ans = dijkstra(1,5); printf("%d",ans); return 0; } /* Données de bord 1 2 71 3 91 6 142 3 102 4 153 6 25 6 94 5 63 4 11*/



Copyright:Cet article est[Questions et réponses du rseoc]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2022/134/202205072133332806.html