Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Beginner Web en 12 Abril 2022, 03:06 am



Título: Operadores Lógicos
Publicado por: Beginner Web en 12 Abril 2022, 03:06 am
Buenas me dieron este ejercicio pero no se como resolverlo:

Dadas A, B, C, D, E y F variables de tipo numérico escribir las expresiones lógicas
correspondientes a los siguientes enunciados:
a. A es positivo y B es negativo.
b. A, B y C son diferentes.
c. E es no nulo y F no es mayor que G.
d. B está estrictamente entre A y C.
e. F es negativo o E es no negativo pero no ambos a la vez

Hasta ahora tengo esto pero en algún lugar debo tener errores como por ejemplo != no va sino que va <>  y cosas así

a. A > 0 Y B < 0
b. A <> B Y A <> C Y B <> C
c. E <> 0 Y F <= G
d. A <= B <= C
e. F < 0 Oe F >= 0

 :-[


Título: Re: Operadores Lógicos
Publicado por: Serapis en 12 Abril 2022, 18:55 pm
Es adecuado incluir paréntesis, ofrece m´s precisión para mantener la prioridad de operadores, aunque tengan la misma prioridad, solventa especialmente cuando están anidados (solo el último caso lo requiere extricamente si no usamos el operador O-exclusivo)... además añade claridad (salvo que haya muchos paréntesis anidados, que fuerza a contarlos).

a: A es positivo y B es negativo.
a: (A > 0) Y (B < 0)

Este admite múltiples soluciones a la hora de poner variables... te pongo solo 2.
b: A, B y C son diferentes.
b: (A <> B) Y (A <> C) Y (B <> C)  
b: (A <> B) Y (B <> C) Y (C <> A)

c: E es no nulo y F no es mayor que G.
c: (E <> 0) Y (F <= G)

d: B está estrictamente entre A y C.
d: (B > A) Y (B < C)
d: (A < B) Y (C > B)
Al decir 'estrictamente', se debe entender que no admite la siguiente:
d: (B => A) Y (B <= C)
Nota que al dar dos variables (A,C), deben entenderse como el menor y mayor del rango respectivamente.

e: F es negativo o E es no negativo pero no ambos a la vez
e: ((F < 0) Y (E => 0)) O ((F => 0) Y (E < 0))
e:  (F < 0) XOR (E => 0)       # XOR es un operador O-exclusivo: Solo-A o Solo-B

Sobre los operadores, considera que una cosa son los operadores matemáticos... a la hora de programar hay que poner el operador que admite el lenguaje.
Tirando de pseudocódigo es preferible también poner operadores matemáticos (siempre será entendible por todos).


Título: Re: Operadores Lógicos
Publicado por: Beginner Web en 13 Abril 2022, 03:10 am
Muchas gracias <3
Yo al principio había hecho así pero cuando fui a clases practicas mi profesora confundió todo, creo que le da a la bebida, estoy haciendo una nueva carrera de 0 y estoy viendo temas viejos de programación  ;D


Título: Re: Operadores Lógicos
Publicado por: RayR en 13 Abril 2022, 17:32 pm
Cuidado con e. Fíjate que el enunciado:

F es negativo o E es no negativo pero no ambos a la vez

no dice nada acerca de qué pasa cuando F es no negativo (o cuando E es negativo). Suponer que negar una cosa implica negar la otra es un error. Si puedes usar la negación o complemento lógico (y no veo por qué no) podrías resolverlo así:

NO ((F < 0) Y (E >= 0))


Edit: no lo leí bien, pues lo anterior admitiría que ninguna de las condiciones se cumpliera.

Por cierto, aquí hay que invertir las condiciones ya sea de E o de F:

Citar
((F < 0) Y (E => 0)) O ((F => 0) Y (E < 0))