commit f594cd05ac3ba92a9212cf862e8f7aba064f72d7
parent 58c833f4ee3908c35574391fa87b5b338783ebd9
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date: Sun, 23 Jun 2024 14:54:09 -0300
remove `listaAux` argument from func `paradaMasCercana`
Diffstat:
3 files changed, 24 insertions(+), 17 deletions(-)
diff --git a/barrio.cpp b/barrio.cpp
@@ -32,27 +32,29 @@ double Barrio::getDistancia(double x1,double y1,double x2,double y2){ //CONSIGAN
return std::sqrt(dX*dX + dY*dY);
}
-Parada *Barrio::paradaMasCercana(double coordX, double coordY,List<Parada*>* paradasAux) { //CONSIGNA 2
+// lon -> X; lat -> Y;
+Parada *Barrio::paradaMasCercana(double lon, double lat) { //CONSIGNA 2
double distancia;
- double distanciaMinima;
+ double distanciaMin;
+
Parada *resultado, *aux;
resultado = aux = NULL;
- paradasAux->startCursor();
- while(paradasAux->forwardCursor()){
- Parada *aux = paradasAux->getCursorData();
+ this->paradas->startCursor();
+ while(this->paradas->forwardCursor()){
+ aux = this->paradas->getCursorData();
if(resultado == NULL) {
resultado = aux;
- distanciaMinima = getDistancia(coordX, coordY, aux->getCoordX(), aux->getCoordY());
+ distanciaMin = getDistancia(lon, lat, aux->getCoordX(), aux->getCoordY());
}
else {
- distancia = getDistancia(coordX,coordY,aux->getCoordX(),aux->getCoordY());
+ distancia = getDistancia(lon, lat, aux->getCoordX(),aux->getCoordY());
- if(distancia < distanciaMinima) {
+ if(distancia < distanciaMin) {
resultado = aux;
- distanciaMinima = distancia;
+ distanciaMin = distancia;
}
}
}
@@ -71,7 +73,7 @@ bool Barrio::lineaEnParada(int linea, std::vector<int> *listaDeLineas ) { //CONS
}
List<Parada*> *Barrio::listaDeParadasPorLinea(int linea) { //CONSIGNA 3
- Parada *paradaActual;
+ Parada *parada;
List<Parada*> *resultado;
std::vector<int> *listaDeLineas;
@@ -79,15 +81,20 @@ List<Parada*> *Barrio::listaDeParadasPorLinea(int linea) { //CONSIGNA 3
this->paradas->startCursor();
while(this->paradas->forwardCursor()){
- paradaActual = this->paradas->getCursorData();
- listaDeLineas = paradaActual->getLineas();
+ parada = this->paradas->getCursorData();
+ listaDeLineas = parada->getLineas();
if(lineaEnParada(linea, listaDeLineas)) {
- resultado->insert(paradaActual);
+ resultado->insert(parada);
}
}
- return resultado->getSize() == 0 ? NULL : resultado;
+ if(resultado->getSize() == 0) {
+ delete resultado;
+ return NULL;
+ }
+
+ return resultado;
}
unsigned int Barrio::getCantidadDeParadasPorLinea(int linea) { //CONSIGNA 4
diff --git a/barrio.h b/barrio.h
@@ -58,7 +58,7 @@ public:
/*
* pos: devuelve la parada mas cercana a una coordenada dada
*/
- Parada *paradaMasCercana(double coordX, double coordY, List<Parada*>* paradasAux);
+ Parada *paradaMasCercana(double coordX, double coordY);
/*
* pre: recibe el numero de una Linea
diff --git a/menu.cpp b/menu.cpp
@@ -48,11 +48,11 @@ Parada *Menu::paradaMasCercanaPorCoordenada(double coordX, double coordY) {
barrio = this->barrios->getCursorData();
if(res == NULL) {
- res = barrio->paradaMasCercana(coordX, coordY, barrio->getParadas());
+ res = barrio->paradaMasCercana(coordX, coordY);
distanciaMin = getDistancia(coordX, coordY, res->getCoordX(), res->getCoordY());
}
else {
- parada = barrio->paradaMasCercana(coordX, coordY, barrio->getParadas());
+ parada = barrio->paradaMasCercana(coordX, coordY);
distancia = getDistancia(coordX, coordY, parada->getCoordX(), parada->getCoordY());
if(distanciaMin > distancia) {