Código
#include <iostream> #include <stdlib.h> #include <string.h> using namespace std; typedef struct coordenadas{ int grados; int minutos; int segundos; char direccion; }; typedef struct punto_geografico{ coordenadas latitud; coordenadas longitud; }; void crear(coordenadas &c, bool latitud); bool validar(coordenadas p, bool latitud); bool iguales(punto_geografico p, punto_geografico q); void determinar_ubicacion(punto_geografico p); int main() { punto_geografico p, q; cout<<"Crear primer punto geografico"<<endl; cout<<"Latitud"<<endl; crear(p.latitud,1); cout<<"Longitud"<<endl; crear(p.longitud,0); cout<<"Crear segundo punto geografico"<<endl; cout<<"Latitud"<<endl; crear(q.latitud,1); cout<<"Longitud"<<endl; crear(q.longitud,0); if(iguales(p,q)==true) cout<<"Son iguales"<<endl; else cout<<"Son diferentes"<<endl; determinar_ubicacion(p); system("pause"); } void crear(coordenadas &c, bool latitud) { do{ cout<<"Ingrese grados : "; cin>>c.grados; cout<<"Ingrese minutos : "; cin>>c.minutos; cout<<"Ingrese segundos : "; cin>>c.segundos; cout<<"Ingrese direccion: "; cin>>c.direccion; }while(validar(c,latitud)==false); } //Aqui bool validar(coordenadas c, bool latitud) { if(latitud==true){ if(c.direccion=='N' || c.direccion=='S'){ if(c.grados==90 && c.minutos==0 && c.segundos==0) return true; else{ if(c.grados<0 || c.grados>89 || c.minutos<0 || c.minutos>59 || c.segundos<0 || c.segundos>59) return false; else return true; } } else return false; } else{ if(c.direccion=='E' || c.direccion=='O'){ if(c.grados==180 && c.minutos==0 && c.segundos==0) return true; else{ if(c.grados<0 || c.grados>179 || c.minutos<0 || c.minutos>59 || c.segundos<0 || c.segundos>59) return false; else return true; } } else return false; } } //Y aqui bool iguales(punto_geografico p, punto_geografico q) { if(p.latitud.direccion==q.latitud.direccion && p.longitud.direccion==q.longitud.direccion){ if(p.latitud.grados==q.latitud.grados && p.longitud.grados==q.longitud.grados) if(p.latitud.minutos==q.latitud.minutos && p.longitud.minutos==q.longitud.minutos) if(p.latitud.segundos==q.latitud.segundos && p.longitud.segundos==q.longitud.segundos) return true; } else return false; } void determinar_ubicacion(punto_geografico p) { cout<<"El punto geografico se ubica en"; if(p.latitud.direccion=='N') cout<<" el hemisferio Norte "; else cout<<" el hemisferio Sur "; if(p.longitud.direccion=='E') cout<<"Oriental"<<endl; else cout<<"Occidentel"<<endl; }