CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
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:
Mbarrio.cpp | 35+++++++++++++++++++++--------------
Mbarrio.h | 2+-
Mmenu.cpp | 4++--
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) {