commit 03b948063543bb4baf9dcc2b7f5888b2a0245f3f
parent 15f334b7af2a58fd7df4f32bad2d1f9cd8351a37
Author: CamiAni <129856337+CamiAni@users.noreply.github.com>
Date: Wed, 19 Jun 2024 12:02:48 -0300
Merge pull request #9 from IgnacioCettour/main
Actualizamos cositas
Diffstat:
| A | Menu.cpp | | | 218 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | Menu.h | | | 74 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | barrio.h | | | 7 | ++++--- |
3 files changed, 296 insertions(+), 3 deletions(-)
diff --git a/Menu.cpp b/Menu.cpp
@@ -0,0 +1,218 @@
+
+#include "Menu.h"
+
+void Menu::cantidadDeParadasPorBarrio(){
+
+ this->barrios->startCursor();
+
+ while(this->barrios->forwardCursor()){
+
+ Barrio * barrioAux = this->barrios->getCursorData();
+
+ std::cout<<"La cantidad de paradas que hay en el barrio "
+ <<&barrioAux
+ <<" es: "
+ <<barrioAux->getSizeListaDeParadas()
+ <<std::endl;
+ }
+ }
+
+void Menu::paradaMasCercanaPorCoordenada(double coordX,double coordY){
+
+ double distanciaMinima;
+ double distancia;
+
+ Parada * paradaResultado = NULL;
+ Parada * paradaActual = NULL;
+
+ this->barrios->startCursor();
+
+ while(this->barrios->forwardCursor()){
+
+
+ Barrio * barrioAux = this->barrios->getCursorData();
+
+ if(paradaResultado == NULL){
+
+ paradaResultado = barrioAux->paradaMasCercana(coordX,coordY);
+ distanciaMinima = barrioAux->getDistancia(coordX,coordY,paradaResultado->getCoordX(),paradaResultado->getCoordY());
+ }
+ else {
+
+ paradaActual= barrioAux->paradaMasCercana(coordX,coordY);
+ distancia = barrioAux->getDistancia(coordX,coordY,paradaActual->getCoordX(),paradaActual->getCoordY());
+
+ if(distanciaMinima > distancia){
+
+ distanciaMinima = distancia;
+ paradaResultado = paradaActual;
+ }
+ }
+ }
+
+ std::cout<<"La parada mas cercana esta en: "
+ <<paradaResultado->getDireccion()
+ <<std::endl
+ <<"en la coordenada X: "
+ <<paradaResultado->getCoordX()
+ <<std::endl
+ <<"en la coordenada Y:"
+ <<paradaResultado->getCoordY()
+ <<std::endl;
+}
+
+void Menu::agregarElementosDeLista(List<Parada*>* listaAux,List<Parada*>* listaResultado){
+
+ listaAux->startCursor();
+ while(listaAux->forwardCursor()){
+
+ Parada * paradaAux = listaAux->getCursorData();
+
+ listaResultado->insert(paradaAux);
+ }
+
+}
+
+void Menu::imprimirParadasPorLinea(List<Parada*>* listaDeParadas){
+
+ if(listaDeParadas->getSize() == 0){
+ std::cout<<"No se econtro ninguna parada para esta linea";
+ throw "No se econtro ninguna parada para esta linea";
+ }
+
+ listaDeParadas->startCursor();
+ while(listaDeParadas->forwardCursor()){
+
+ Parada * paradaAux = listaDeParadas->getCursorData();
+
+ std::cout<<"La parada esta en: "
+ <<paradaAux->getDireccion()
+ <<std::endl
+ <<"en la coordenada X: "
+ <<paradaAux->getCoordX()
+ <<std::endl
+ <<"en la coordenada Y:"
+ <<paradaAux->getCoordY()
+ <<std::endl;
+ }
+}
+
+
+
+void Menu::paradasPorLinea(int linea){
+
+ if(linea >= 0){
+ std::cout<<"La linea no existe, no puede ser menor o igual a cero";
+ throw "La linea no existe, no puede ser menor o igual a cero";
+ }
+
+ this->paradasPorCadaLinea = NULL;
+
+ List<Parada*>* listaAux = new List<Parada*>();
+
+ this->barrios->startCursor();
+
+ while(this->barrios->forwardCursor()){
+
+ Barrio * barrioAux = this->barrios->getCursorData();
+
+ listaAux = barrioAux->listaDeParadasPorLinea(linea);
+
+
+
+ agregarElementosDeLista(listaAux, this->paradasPorCadaLinea);
+
+ }
+
+ imprimirParadasPorLinea(this->paradasPorCadaLinea);
+}
+
+void Menu::cantidadDeParadasPorLinea(){
+
+ this->barrios->startCursor();
+ while(this->barrios->forwardCursor()){
+
+ Barrio * barrioAux = this->barrios->getCursorData();
+
+ List<Parada*>* listaParadas = barrioAux->getParadas();
+
+ // Falta terminar
+
+ }
+
+
+
+
+
+
+
+}
+
+
+
+
+
+Menu::Menu(int opcion) {
+
+ this->opcion = opcion;
+ this->barrios = new List<Barrio*>();
+
+ // agregar barrios a la lista con tda archivos(main modularizado)
+
+
+
+ if(opcion < 1 && opcion > 5){
+ std::cout<<"No se ingreso una opcion valida"<<std::endl;
+ throw "No se ingreso una opcion valida";
+ }
+
+ std::cout<<"1) Listado de cantidad de paradas por Barrio"<<std::endl //HECHO!!!!!!!!!!
+ <<"2) Parada mas cercana a una coordenada ingresada por teclado"<<std::endl //HECHO!!!!!!!!!!
+ <<"3) Listado de paradas de una linea de colectivo"<<std::endl //HECHO!!!!!!!!!!
+ <<"4) Listado de cantidad de paradas por linea de colectivo"<<std::endl
+ <<"5) Dado un barrio y linea de colectivo, imprimir las paradas ordenadas por distancia"<<std::endl;
+
+ if(opcion == 1){
+ cantidadDeParadasPorBarrio();
+ }
+
+ else if(opcion == 2){
+
+ std::cout<<"Indique la coordenada en X: ";
+ std::cin>>this->coordX;
+
+ std::cout<<"Indique la coordenada en Y: ";
+ std::cin>>this->coordY;
+
+ paradaMasCercanaPorCoordenada(this->coordX,this->coordY);
+ }
+
+ else if(opcion == 3){
+
+ std::cout<<"Indique la Linea: ";
+ std::cin>>this->linea;
+
+ paradasPorLinea(this->linea);
+
+ }
+
+ else if(opcion == 4){
+
+ cantidadDeParadasPorLinea();
+
+
+ }
+
+ else if(opcion == 5){
+
+ //completar
+
+
+ }
+
+}
+
+Menu::~Menu() {
+ // TODO Auto-generated destructor stub
+}
+
diff --git a/Menu.h b/Menu.h
@@ -0,0 +1,74 @@
+
+#include "list.h"
+#include "barrio.h"
+#include "parada.h"
+#ifndef CB100_TP2_MAIN_MENU_H_
+#define CB100_TP2_MAIN_MENU_H_
+
+class Menu {
+
+private:
+
+ int opcion;
+ List<Barrio*>* barrios;
+ double coordX;
+ double coordY;
+ int linea;
+ List<Parada*>* paradasPorCadaLinea;
+ List<Parada*>* cantidadDeParadasPorCadaLinea;
+
+
+public:
+
+ /*
+ *
+ */
+ Menu(int opcion);
+
+ /*
+ * pos: Recorre la lista de barrios e imprime la cantidad de paradas de cada barrio
+ */
+ void cantidadDeParadasPorBarrio(); // CONSIGA 1
+
+ /*
+ * pre: Recibe como parametro las coordenadas en X e Y
+ * pos: Imprime por pantalla la parada mas cercana a la coordenada dada
+ */
+ void paradaMasCercanaPorCoordenada(double coordX,double coordY); //CONSIGNA 2 si imprime
+
+ /*
+ * pre: Recibe como parametro el numero de la linea
+ * pos: Imprime por pantalla un listado de paradas por donde pasa la linea
+ */
+ void paradasPorLinea(int linea); //CONSIGNA 3
+
+ /*
+ * pre: Recibe una lista de tipo parada
+ * pos: Imprime por pantalla la parada con su direcion y sus coordenadas en X e Y
+ */
+ void imprimirParadasPorLinea(List<Parada*>* listaDeParadas);
+
+ /*
+ * pre: Recibe como parametros dos listas
+ * pos: Agrega los elementos de la lista aux a la lista resultado
+ */
+ void agregarElementosDeLista(List<Parada*>* listaAux,List<Parada*>* listaResultado);
+ /*
+ * pre: Recibe como parametro el numero de la linea
+ * pos: Imprime por pantalla un listado de cantidad de paradas por donde pasa la linea
+ */
+ void cantidadDeParadasPorLinea(); //CONSIGNA 4
+
+ /*
+ *
+ */
+
+ // HACER EL 5 (PREGUNTAR COMO HACERLO)
+
+ /*
+ *
+ */
+ virtual ~Menu();
+};
+
+#endif
diff --git a/barrio.h b/barrio.h
@@ -12,7 +12,10 @@ private:
int comuna;
List<Parada*> *paradas;
- /*
+
+public:
+
+ /*
* pos: Devuelve la distancia entre la coordenadas dadas
*/
double getDistancia(double x1,double y1,double x2,double y2);
@@ -21,8 +24,6 @@ private:
*/
bool lineaEnParada(int linea,List<Linea*>* listaDeLineas );
-
-public:
/*
*pos: Deja creado la clase con los parametros dados
*/