- #include <stdio.h>
- #include <iostream>
- #include <stdlib.h>
- #include <string.h>
- #include "nodos21.h"
- #define max 40
- using namespace std;
- int main(){
- FILE *loc, *rst;
- loc=fopen("localidades.dat", "r");
- rst=fopen("resultados.out", "a");
- listady lista;
- arbol abb;
- int prod;
- if (loc==NULL){
- cout<<("Error al abrir el archivo")<<endl;
- exit (EXIT_FAILURE);
- }else{
- int n, m;
- char local[max], orig[max], dest[max];
- float coord1, coord2;
- fscanf(loc, "%d", &n);
- if ((n<=1) || (n>=10000)){
- cout<<("ERROR CON CANTIDAD DE LOCALIDADES ")<<endl;
- }else{
- for (int i=0; i<n; i++){
- fscanf(loc, "%s", local);
- fscanf(loc, "%f", &coord1);
- fscanf(loc, "%f", &coord2);
- lista.insertarlocalidad(local, coord1, coord2, prod);
- insertararb(abb.prima, local, coord1, coord2);
- }
- }
- fscanf(loc,"%d", &m);
- int limite= (n*(n-1)/2);
- if ((m<=1) || (m>limite)){
- cout<<("ERROR CON CANTIDAD DE RELACIONES ")<<endl;
- }else{
- for (int j=0; j<m; j++){
- fscanf(loc, "%s", orig);
- fscanf(loc, "%s", dest);
- lista.insertarrelacion(orig, dest, prod);
- }
- }
- }
- string nombreo, nombred;
- float cx1, cy1,cx2, cy2;
- vertarb *o, *d;
- bool l1, l2;
- int opc1;
- //MENU PRINCIPAL
- cout<<(" ---------------------------------------------- ")<<endl;
- cout<<("| Escuela de Computacion |")<<endl;
- cout<<("| GPS de uso simple portatil |")<<endl;
- cout<<("| |")<<endl;
- cout<<("| Menu de opciones: |")<<endl;
- cout<<("| |")<<endl;
- cout<<("| 1. Agregar localidad. |")<<endl;
- cout<<("| 2. Eliminar localidad. |")<<endl;
- cout<<("| 3. Agregar relacion. |")<<endl;
- cout<<("| 4. Eliminar relacion. |")<<endl;
- cout<<("| 5. Buscar ruta. |")<<endl;
- cout<<("| 6. Buscar ruta dada por dos coordenadas. |")<<endl;
- cout<<("| 7. Salir de la Aplicacion. |")<<endl;
- cout<<(" ---------------------------------------------- ")<<endl;
- cout<<"Ingrese su opcion y luego presione Enter:"<<endl;
- do{
- cin>>opc1;
- switch(opc1){
- case 1:
- cout<<opc1<<" ";
- cin>>nombreo>>cx1>>cy1;
- lista.insertarlocalidad(nombreo, cx1, cy1, prod);
- insertararb(abb.prima, nombreo, cx1, cy1);
- fprintf(rst, "%d", prod);
- break;
- case 2:
- cout<<opc1<<" ";
- cin>>nombreo;
- eliminararb(abb.prima, nombreo, prod);
- fprintf(rst, "%d", prod);
- break;
- case 3:
- cout<<opc1<<" ";
- cin>>nombreo>>nombred;
- lista.insertarrelacion(nombreo, nombred, prod);
- fprintf(rst, "%d", prod);
- break;
- case 4:
- cout<<opc1<<" ";
- cin>>nombreo>>nombred;
- lista.eliminarrelacion(nombreo, nombred, prod);
- fprintf(rst, "%d", prod);
- break;
- case 5:
- cout<<opc1<<" ";
- cin>>nombreo>>nombred;
- l1=buscar(abb.prima, nombreo, o);
- l2=buscar(abb.prima, nombred, d);
- //if ((l1==true)&&(l2==true)){
- bfs(nombreo,nombred);
- //fprintf(rst, "%d", 1);
- //}else if ((l1==false)&&(l2==true)){
- // fprintf(rst, "%d", -3);
- //}else if ((l1==true)&&(l2==false)){
- // fprintf(rst, "%d", -2);
- //}else if ((l1==false)&&(l2==false)){
- // fprintf(rst, "%d", -1);
- //}else{
- // fprintf(rst, "%d", 0);
- //}
- break;
- case 6:
- cout<<opc1<<" ";
- cin>>cx1>>cy1>>cx2>>cy2;
- //distancia();
- break;
- case 7:
- cout<<("Salida exitosa")<<endl;
- break;
- default:
- cout<<(" Opcion invalida, suministre una opcion entre 1 y 7 ")<<endl;
- }
- }while (opc1!=7);
- fclose(loc);
- fclose(rst);
- return 0;
- }