CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit 7edd4e4eb0c6d15ad58d0a8592fc3b2728d695cb
parent 6d14d168c6a1a4cb2f14dcdd63e2b7ed5ae36237
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Wed, 19 Jun 2024 22:17:57 -0300

use `std::vector` for `lineas` instead of class `Linea`

Diffstat:
Mbarrio.cpp | 13+++++--------
Mbarrio.h | 11+++++------
Mparada.cpp | 9++++-----
Mparada.h | 8++++----
4 files changed, 18 insertions(+), 23 deletions(-)
diff --git a/barrio.cpp b/barrio.cpp
@@ -65,13 +65,10 @@ Parada *Barrio::paradaMasCercana(double coordX, double coordY) { //CONSIGNA 2
     return resultado;
 }
 
-bool Barrio::lineaEnParada(int linea,List<Linea*> *listaDeLineas ) { //CONSIGNA 3
-    listaDeLineas->startCursor();
+bool Barrio::lineaEnParada(int linea, std::vector<int> *listaDeLineas ) { //CONSIGNA 3
 
-    while(listaDeLineas->forwardCursor()) {
-        Linea *lineaActual = listaDeLineas->getCursorData();
-
-        if(lineaActual->getNumero() == linea) {
+    for(size_t i = 0; i < listaDeLineas->size(); ++i) {
+        if((*listaDeLineas)[i] == linea) {
             return true;
         }
     }
@@ -79,13 +76,13 @@ bool Barrio::lineaEnParada(int linea,List<Linea*> *listaDeLineas ) { //CONSIGNA 
 }
 
 List<Parada*> *Barrio::listaDeParadasPorLinea(int linea) { //CONSIGNA 3
-    List<Parada*> *resultado = NULL;
+    std::vector<int> *listaDeLineas;
 
     this->paradas->startCursor();
     while(this->paradas->forwardCursor()){
         Parada *paradaActual = this->paradas->getCursorData();
 
-        List<Linea*> *listaDeLineas = paradaActual->getLineas();
+        listaDeLineas = paradaActual->getLineas();
 
         if(lineaEnParada(linea, listaDeLineas)){
             resultado->insert(paradaActual);
diff --git a/barrio.h b/barrio.h
@@ -2,6 +2,7 @@
 #define BARRIO_H_
 
 #include <string>
+#include <vector>
 
 #include "list.h"
 #include "parada.h"
@@ -15,14 +16,11 @@ private:
 
 public:
 
-        /*
-     * pos: Devuelve la distancia entre la coordenadas dadas
      */
     double getDistancia(double x1,double y1,double x2,double y2);
     /*
      * pos: Devuelve True si la linea se encuentra en listaDeLineas, sino devuelve False
      */
-    bool lineaEnParada(int linea,List<Linea*>* listaDeLineas );
 
     /*
      *pos: Deja creado la clase con los parametros dados
@@ -33,6 +31,8 @@ public:
      * pos: Vacia y elimina el Barrio
      */
     virtual ~Barrio();
+    bool lineaEnParada(int linea, std::vector<int> *listaDeLineas);
+
     /*
      * pos: Devuelve el numero de comuna del Barrio
      */
@@ -59,16 +59,15 @@ public:
     int getSizeListaDeParadas(); //CONSIGNA 1
 
     /*
-     * pre:
      * pos: Devuelve la parada mas cercana a una coordenada dada
      */
-    Parada * paradaMasCercana(double coordX, double coordY);
+    Parada *paradaMasCercana(double coordX, double coordY);
 
     /*
      * pre: Recibe el numero de una Linea
      * pos: Devuelve una lista con todas las paradas del numero dado
      */
-    List<Parada*>* listaDeParadasPorLinea(int linea);
+    List<Parada*> *listaDeParadasPorLinea(int linea);
 
     /*
      * pre: Recibe el numero de una linea
diff --git a/parada.cpp b/parada.cpp
@@ -10,7 +10,7 @@ Parada::Parada(std::string calle,
     this->coordX = coordX;
     this->coordY = coordY;
     this->direccion = direccion;
-    this->lineas = new List<Linea*>(); // crea la lista para las lineas
+    this->lineas = new std::vector<int>();
 }
 
 std::string Parada::getCalle() {
@@ -33,15 +33,14 @@ double Parada::getCoordY() {
     return this->coordY;
 }
 
-List<Linea*> *Parada::getLineas() {
+std::vector<int> *Parada::getLineas() {
     return this->lineas;
 }
 
-void Parada::addLinea(int numero, bool sentido) {
-    this->lineas->insert(new Linea(numero, sentido));
+void Parada::addLinea(int numero) {
+    this->lineas->push_back(numero);
 }
 
 Parada::~Parada() {
     delete lineas;
 }
-
diff --git a/parada.h b/parada.h
@@ -2,9 +2,9 @@
 #define PARADA_H_
 
 #include <string>
+#include <vector>
 
 #include "list.h"
-#include "linea.h"
 
 class Parada {
 private:
@@ -12,7 +12,7 @@ private:
     int alturaPlano;
     std::string direccion;
     double coordX, coordY;
-    List<Linea*> *lineas;  // lineas que tienen sentido y numero
+    std::vector<int> *lineas;
 
 public:
     /*
@@ -51,12 +51,12 @@ public:
     /*
      * post: Devuelve una lista con las lineas de esa parada
      */
-    List<Linea*> *getLineas();
+    std::vector<int> *getLineas();
 
     /*
      * post: Setea las lineas de esa parada
      */
-    void addLinea(int numero, bool sentido);
+    void addLinea(int numero);
 
     /*
      * post: Elimina y vacia la parada y sus lineas