-
Notifications
You must be signed in to change notification settings - Fork 0
/
funcionesAuxiliares.hpp
142 lines (125 loc) · 5.95 KB
/
funcionesAuxiliares.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*!
\file funcionesAuxiliares.hpp
\brief Funciones auxiliares para el programa principal de la práctica 4
\author Carlos Luque Córdoba
\date 29/05/2018
*/
#ifndef _FuncionesAuxiliares_HPP_
#define _FuncionesAuxiliares_HPP_
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
#include "macros.hpp"
#include "distancia.hpp"
#include "Punto.hpp"
#include "Vertice.hpp"
#include "Lado.hpp"
#include "Grafo.hpp"
/*! (
\namespace ed
\brief Espacio de nombres para la asignatura Estructuras de Datos
*/
namespace ed{
/*!
\brief Muestra el menú del programa principal
\return Devuelve el número de opción elegido
*/
int menu();
/*!
\fn vector<vector<float> > prim(Grafo <Punto<float> > &graph, ed::Grafo <ed::Punto<float> > &graph2)
\brief Función que genera el arbol abarcador según el algoritmo de Prim
\note Función de tipo vector de vectores flotantes
\param graph: Grafo de tipo puntos flotantes pasado por referencia
\param graph2: Grafo de tipo puntos flotantes pasado por referencia
\attention El grafo debe ser conexo
\pre Ninguna
\post Ninguna
\sa Ninguna
*/
std::vector<std::vector<float> > prim(Grafo <Punto<float> > &graph, ed::Grafo <ed::Punto<float> > &graph2);
/*!
\fn vector<vector<float> > kruskal(Grafo <Punto<float> > &graph, ed::Grafo <ed::Punto<float> > &graph2)
\brief Función que genera el arbol abarcador según el algoritmo de Kruskal
\note Función de tipo vector de vectores flotantes
\param graph: Grafo de tipo puntos flotantes pasado por referencia
\param graph2: Grafo de tipo puntos flotantes pasado por referencia
\attention El grafo debe ser conexo
\pre Ninguna
\post Ninguna
\sa Ninguna
*/
std::vector<std::vector<float> > kruskal(Grafo <Punto<float> > &graph, ed::Grafo <ed::Punto<float> > &graph2);
/*!
\fn void cargarFichero(ed::Grafo <ed::Punto<float> > &graph, bool directed)
\brief Función que permite cargar un fichero con vertices y/o lados
\note Función de tipo void
\param graph: Grafo de tipo puntos flotantes pasado por referencia
\param directed: Booleano que permite conocer el estado del grafo
*/
void cargarFichero(ed::Grafo <ed::Punto<float> > &graph, bool directed);
/*!
\fn bool grabarFichero(ed::Grafo <ed::Punto<float> > &graph, bool p, bool k)
\brief Función que permite grabar en 3 ficheros diferentes la matriz de adyacencias y las matrices de los caminos míminimos de los arboles abarcadores
\note Función de tipo bool
\return Nos permite conocer si se ha generado la matriz de adyacencias
\param graph: Grafo de tipo puntos flotantes pasado por referencia
\param p: Booleano que nos permite conocer si Prim se ha ejecutado
\param k: Booleano que nos permite conocer si Kruskal se ha ejecutado
*/
bool grabarFichero(ed::Grafo <ed::Punto<float> > &graph, bool p, bool k);
/*!
\fn void generarPNGPrim(char *nombreFichero2, std::vector<float> padre, std::vector<float> hijo, std::vector<float> coste)
\brief Función que permite generar el fichero .dot para la creación del PNG del arbol abarcador del algoritmo de Prim
\note Función de tipo void
\param nombreFichero2: Char para el nombre del fichero, ya que se usan la función fprintf()
\param padre: Vector de flotantes donde se guardan los lados visitados
\param hijo: Vector de flotantes donde se guardan los lados a visitar
\param coste: Vector de flotantes donde se guardan los costes de los lados por los que ha pasado el arbol abarcador
\attention El grafo debe ser conexo
\attention El fichero debe tener extensión .dot
*/
void generarPNGPrim(char *nombreFichero2, std::vector<float> padre, std::vector<float> hijo, std::vector<float> coste);
/*!
\fn void generarPNGKruskal(char *nombreFichero2, std::vector<float> padre, std::vector<float> hijo, std::vector<float> coste)
\brief Función que permite generar el fichero .dot para la creación del PNG del arbol abarcador del algoritmo de Kruskal
\note Función de tipo void
\param nombreFichero2: Char para el nombre del fichero, ya que se usan la función fprintf()
\param padre: Vector de flotantes donde se guardan los lados visitados
\param hijo: Vector de flotantes donde se guardan los lados a visitar
\param coste: Vector de flotantes donde se guardan los costes de los lados por los que ha pasado el arbol abarcador
\attention El grafo debe ser conexo
\attention El fichero debe tener extensión .dot
*/
void generarPNGKruskal(char *nombreFichero2, std::vector<float> padre, std::vector<float> hijo, std::vector<float> coste);
/*!
\fn void principio()
\brief Función que nos permite elegir entre Dirigido, No dirigido o salir del programa al iniciarlo
\note Función de tipo bool
*/
bool principio();
/*!
\fn void borrarVerticeLados(ed::Grafo <ed::Punto<float> > &graph)
\brief Función que permite borrar los lados conectados de un vertice en el Grafo
\note Función de tipo void
\param graph: Grafo de tipo puntos flotantes pasado por referencia
*/
void borrarVerticeLados(ed::Grafo <ed::Punto<float> > &graph);
/*!
\fn void leerLado(ed::Grafo <ed::Punto<float> > &graph)
\brief Función que permite añadir un lado por pantalla
\note Función de tipo void
\param graph: Grafo de tipo puntos flotantes pasado por referencia
*/
void leerLado(ed::Grafo <ed::Punto<float> > &graph);
/*!
\fn void leerVertice(ed::Grafo <ed::Punto<float> > &graph)
\brief Función que permite añadir un vertice por pantalla
\note Función de tipo void
\param graph: Grafo de tipo puntos flotantes pasado por referencia
*/
void leerVertice(ed::Grafo <ed::Punto<float> > &graph);
} // Fin del espacio de nombre de la asignatura: ed
// Fin de _FuncionesAuxiliares_HPP_
#endif