necesito ayuda

Dudas e ideas sobre los distintos e infinitos (:-)) algoritmos existentes.
Responder
Mensaje
Autor
arthur16
Mensajes: 2
Registrado: 08/09/2013 9:47 am
Contactar:

necesito ayuda

#1 Mensaje por arthur16 » 08/09/2013 9:52 am

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.

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#2 Mensaje por rir3760 » 08/09/2013 10:48 am

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

arthur16
Mensajes: 2
Registrado: 08/09/2013 9:47 am
Contactar:

Muy agradecido

#3 Mensaje por arthur16 » 10/09/2013 12:27 am

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.

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#4 Mensaje por rir3760 » 11/09/2013 6:54 am

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: Seleccionar todo

#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: Seleccionar todo

#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: Seleccionar todo

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

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados