/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

necesito ayuda

 
      Índice del Foro elrincondelc.com -> Algoritmos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
arthur16



Registrado: 08 Sep 2013
Mensajes: 2

MensajePublicado: 08/09/2013 9:52 am
Título: necesito ayuda

bueno soy principiante en esto...pero en la universidad me han pedido que tengo que hecer un programa con el algoritmo de floyd y luego sacar por que nodos pasa el programa para sacar el camino mas corto...lo primero de sacar el algoritmo implementarlo y todo lo que es el programa esta hecho...me falta el poder sacar el camino por el que pasa el programa y la verdad...no se como hacerlo.

Por favor ayuda urgente de como hacerlo.

Programo en c++.

Estuve buscando por el foro y creo que no vi este caso...si me equivoco lo siento, avisadme.

Muchas gracias.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7517
Ubicación: Mexico

MensajePublicado: 08/09/2013 10:48 am
Título:

Hola

Bienvenido a los foros. Por favor lee sus reglas.

Solo tienes que modificar el algoritmo de Floyd para tomar nota de cada una de las rutas. Como hacerlo se describe (en seudocodigo) en la pagina cortesía de Wikipedia: Floyd–Warshall algorithm.

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
arthur16



Registrado: 08 Sep 2013
Mensajes: 2

MensajePublicado: 10/09/2013 12:27 am
Título: Muy agradecido

Muchas gracias rir3760. Me costo un poco entender como hacer el algoritmo, o mejor dicho como entenderlo, para saber como interpretar la matriz de datos resultante.

Alguien podria ayudarme con otro problema. Tengo que leer un fichero en el que estan estos datos:
5
Londres Oslo Madrid Roma Praga
. 90 30 150 .
120 . 70 125 .
20 . . 90 50
25 80 70 . 30
. 30 . 30 .

en ese orden, el 5 es para saber el numero de ciudades que hay, luego el nombre de esas ciudades (necesitaria saber como guardar esos nombres para luego utilizarlos en comparaciones, etc.) y abajo lo que cuesta ir de una ciudad a otra, que es lo que resuelve el algoritmo de Floyd.

Muchas gracias.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7517
Ubicación: Mexico

MensajePublicado: 11/09/2013 6:54 am
Título:

La forma mas fácil es leyendo el archivo linea por linea, para ello utilizas las funciones open y getline para abrir el archivo y leer una linea de texto. Esa linea la almacenas en un objeto de la clase string. Por ejemplo:
Código:
#include <fstream>
using std::ifstream;

#include <iostream>
using std::cout;
using std::endl;

#include <string>
using std::getline;
using std::string;

// ...

ifstream entrada("Entrada.txt");
string linea;

// ...

getline(entrada, linea);
cout << "Linea: \"" << linea << "\"" << endl;

// ...

entrada.close();


De la primera linea obtienes un entero que es el numero de filas y columnas de la matriz de pesos. Ese entero lo extraes de la linea mediante un objeto de la clase stringstream. Por ejemplo:
Código:
#include <sstream>
using std::stringstream;

// ...

getline(entrada, linea);
stringstream ss;
int filas;
ss << linea << endl;
ss >> filas;
cout << "Numero de filas: " << filas << endl;


Ya con el numero de filas declaras un vector (clase vector, no un array) para almacenar los nombres de las ciudades y lo rellenas de forma similar a la lectura del entero. Por ejemplo:
Código:
vector<string> ciudad(filas);
getline(entrada, linea);
ss << linea << endl;
for (int i = 0; i != filas; i++)
   ss >> ciudad[i];

for (int i = 0; i != filas; i++)
   cout << "ciudad[" << i << "] == " << ciudad[i] << endl;


El proceso para leer cada uno de los números de la matriz es similar. Por ultimo si no tienes una guía de referencia sobre la biblioteca estándar de C++ puedes utilizar una en linea, por ejemplo C Plus Plus

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
      Índice del Foro elrincondelc.com -> Algoritmos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com