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