Ejemplo n.º 1
0
        /// <summary>
        /// Insere uma ligação no grafo
        /// </summary>
        /// <param name="cid1">Cidade de onde se sai</param>
        /// <param name="cid2">Cidade para onde se vai</param>
        /// <param name="dist">Distância</param>
        /// <param name="velo">Velocidade média</param>
        public void InserirLigacao(string cid1, string cid2, int dist, int velo, double preco)
        {
            int i1 = cidades.IndexOf(cid1);
            int i2 = cidades.IndexOf(cid2);

            if (i1 < 0 || i2 < 0 || i1 == i2)
            {
                throw new Exception("Operação inválida");
            }

            matriz[i1, i2] = new LigacaoCidades(dist, velo, preco);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Insere uma cidade no grafo
        /// </summary>
        /// <param name="cid">Cidade a ser inserida</param>
        public void InserirCidade(string cid)
        {
            cidades.Add(cid);

            // Cria uma matriz com tamanho suficiente para incluir a nova cidade
            LigacaoCidades[,] novaMatriz = new LigacaoCidades[cidades.Count, cidades.Count];

            // Copia a matriz antiga para a nova, redimensionada
            for (int x = 0; x < cidades.Count - 1; x++)
            {
                for (int y = 0; y < cidades.Count - 1; y++)
                {
                    novaMatriz[x, y] = matriz[x, y];
                }
            }

            // Substitui a matriz antiga pela nova
            matriz = novaMatriz;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Obtém o preço do percurso entre duas cidades
        /// </summary>
        /// <param name="cid1">Cidade de origem</param>
        /// <param name="cid2">Destino</param>
        /// <returns>O preço do percurso entre as cidades ou -1
        /// caso elas não tenham ligação</returns>
        public float GetPreco(string cid1, string cid2)
        {
            LigacaoCidades lig = GetLigacao(cid1, cid2);

            return(lig != null ? (float)lig.Preco : -1);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Obtém a velocidade média do percurso entre duas cidades
        /// </summary>
        /// <param name="cid1">Cidade de origem</param>
        /// <param name="cid2">Destino</param>
        /// <returns>A velocidade média no percurso entre as cidades ou -1
        /// caso elas não tenham ligação</returns>
        public int GetVelocidadeMedia(string cid1, string cid2)
        {
            LigacaoCidades lig = GetLigacao(cid1, cid2);

            return(lig != null ? lig.VelocidadeMedia : -1);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Obtém a distância entre duas cidades
        /// </summary>
        /// <param name="cid1">Cidade de origem</param>
        /// <param name="cid2">Destino</param>
        /// <returns>A distância entre as cidades ou -1 caso elas não tenham ligação</returns>
        public int GetDistancia(string cid1, string cid2)
        {
            LigacaoCidades lig = GetLigacao(cid1, cid2);

            return(lig != null ? lig.Distancia : -1);
        }