Gracias man,
Me acolito mucho tu programa, este es el resultado,chekalo y me cuentas que tal te parece:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include <stdlib.h>
class nodo
{
public:
char valor[40];
nodo *siguiente;
nodo *anterior;
nodo *lado;
nodo(char *v, nodo *sig=NULL, nodo *ant=NULL, nodo *lad=NULL)
{
strcpy(valor,v);
siguiente=sig;
anterior=ant;
lado=lad;
}
};
nodo *primero, *ultimo, *otronodo, *inicio, *otro;
class lista
{
public:
~lista();
void provincia(char v[40]);
void canton(char v[40]);
void buscar(char d[40]);
void listaratras();
void listaradelante();
bool listavacia()
{
return primero==NULL;
}
};
void lista::listaradelante()
{
nodo *aux;
aux=primero;
cout<<endl;
cout<<"ENLISTADO DE PROVINCIAS HACIA ADELANTE"<<endl;
cout<<endl;
while(aux)
{
cout<<"_"<<aux->valor<<endl;
aux=aux->siguiente;
}
}
lista::~lista()
{
nodo *aux;
cout<<"-----------Destructor------------"<<endl;
while(primero)
{
aux=primero;
primero=primero->siguiente;
while(aux)
{
otronodo=aux;
aux=aux->lado;
cout<<otronodo->valor<<endl;
delete otronodo;
}
}
}
void lista:: provincia(char v[40])
{
if(listavacia())
{
inicio=new nodo(v);
primero=inicio;
ultimo=inicio;
otro=inicio;
}
else
{
otronodo=new nodo(v);
inicio->siguiente=otronodo;
otronodo->anterior=inicio;
inicio=otronodo;
ultimo=otronodo;
otro=ultimo;
}
}
void lista:: canton(char v[40])
{
otronodo=new nodo(v);
otro->lado = otronodo;
otro=otronodo;
}
void lista:: buscar(char d[40])
{
nodo *aux;
aux=primero;
while (aux)
{
if(strncmp(d,aux->valor,sizeof(d))==0)
{
cout<<endl<<"Los cantones que pertenecen a "<<d<<" son:";
aux=aux->lado;
cout<<endl;
while(aux)
{cout<<"*) "<<aux->valor<<endl;
aux=aux->lado;}
break;
}
else
{
aux=aux->siguiente;
}
}
}
void lista::listaratras()
{
nodo *aux;
aux=ultimo;
cout<<endl;
cout<<"ENLISTADO DE PROVINCIAS HACIA ATRAS"<<endl;
cout<<endl;
while(aux)
{
cout<<"_"<<aux->valor<<endl;
aux=aux->anterior;
}
}
int main()
{
lista lista;
char info[30];
ifstream dato("provincia.txt",ios::in);
dato.getline(info,sizeof(info));
lista.provincia(info);
while(dato.getline(info,sizeof(info)))
{
if(strcmp(info," ")==1)
{
lista.canton(info);
}
else
{
dato.getline(info,sizeof(info));
lista.provincia(info);
}
}
cout<<"
***PROGRAMA DE ENLAZADO DE PROVINCIAS CON SUS RESPECTIVOS CANTONES***"<<endl<<endl;
cout<<" Veronica Logana";cout<<" - Martin Perez H"<<endl;
int m=0;
char pro[40];
menu:
cout<<endl<<"*.....:M E N U:.....*"<<endl;
cout<<"---------------------"<<endl;
cout<<"1.ENLISTAR provincias"<<endl;
cout<<"2.ENLISTAR hacia atras"<<endl;
cout<<"3.ESCOGER una Provincia"<<endl;
cout<<"4.FINALIZAR PROGRAMA"<<endl;
cout<<endl<<"Ingrese un Numero del Menu: ";cin>>m;
system("cls");
switch(m){
case 1:
lista.listaradelante();
goto menu;
case 2:
lista.listaratras();
goto menu;
case 3:
cout<<endl<<"Seleccione Una Provincia Para Desplegar los Cantones:"<<endl;
char toupper (char pro);
cin>> pro;
char toupper (char pro);
lista.buscar(pro);
goto menu;
case 4:
lista.provincia(info);
return 0;
default:
cout<<"Seleccione entre 1 y 4"<<endl;
goto menu;
}
}
Ha! y soy de ecuador, y hace unos 4 meses pase por tu ciudad, solo de pasadita, desde lima huaraz, y para ir a trujillo, un clima caliente.
Muy hermosa, pero no me quede mas que unas horas, pero mi ciudad favorita fue trujillo, muy completa.
Cabe destacar que aca en ecuador nosotros mensionamos provincias a los departamentos y para ello fue el programa.
en el siguiente link te envio mi "provincias.txt"
o si te interesa enviame un mail a
[email protected] para enviarte sin errores de impresion web.
Mil gracias amigo