Para dejar de verificar condiciones lo que se suele hacer es incluir que <igual> sea <true> en cada <if>.
bool iguales(punto_geografico p, punto_geografico q){
bool igual=true;
if(igual && (p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion))
igual=false;
if(igual && (p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion))
igual=false;
// asi con todos
return igual;
}
Sin embargo esto se hace más cuando en vez de <if> tienes un <while> o un <for>. Para un <if> es mejor usando <else>. Así en cuanto se cumpla un <if> el resto se los va a saltar.
bool iguales(punto_geografico p, punto_geografico q){
bool igual=true;
if(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
igual=false;
else if(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
igual=false;
else if(p.latitud.grados!=q.latitud.grados || p.longitud.grados!=q.longitud.grados)
igual=false;
// asi con todos
return igual;
}
Y otra opcion es asignar cada condición dentro de cada <if> a la propia variable <igual> ya que es booleana. En este caso tendrías que hacerlo negándolas, algo así:
bool iguales(punto_geografico p, punto_geografico q){
bool igual=true;
if(igual)
igual= !(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
if(igual)
igual= !(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
if(igual)
igual= !(p.latitud.grados!=q.latitud.grados || p.longitud.grados!=q.longitud.grados)
// asi con todos
return igual;
}
Un poco raro pero se puede hacer. Puedes elegir la que mejor veas.
PD: Me acabo de dar cuenta de que los dos primeros condicionales son el mismo.
Me quede con la segunda opcion, la tercera me gusta pero es algo rara ero si la entiendo
bool iguales(punto_geografico p, punto_geografico q)
{
bool igual=true;
if(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
igual=false;
else if(p.latitud.direccion!=q.latitud.direccion || p.longitud.direccion!=q.longitud.direccion)
igual=false;
else if(p.latitud.grados!=q.latitud.grados || p.longitud.grados!=q.longitud.grados)
igual=false;
else if(p.latitud.minutos!=q.latitud.minutos || p.longitud.minutos!=q.longitud.minutos)
igual=false;
else if(p.latitud.segundos!=q.latitud.segundos || p.longitud.segundos!=q.longitud.segundos)
igual=false;
return igual;
}