Cita de: Beginner Web en 14 Diciembre 2018, 02:12 AM
se que esto esta mal porque al encontrar la primer condicion que no se cumple ya deberia retornar un false y dejar de verificar las siguientes condiciones
Para dejar de verificar condiciones lo que se suele hacer es incluir que <igual> sea <true> en cada <if>.
Código (cpp) [Seleccionar]
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.
Código (cpp) [Seleccionar]
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í:
Código (cpp) [Seleccionar]
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.
