Gå til innhold

Oppgave med boolske utrykk!


Anbefalte innlegg

Heisann!

 

Går telematikkutdanning i forsvaret, og så har vi fått en litt merkelig innlevering i java.

 

"Du har de to boolske variablene pose og sekk, lag et utrykk som er sant kun når en av de er sanne"..

 

Da tenkte jeg at jeg kan innføre en bolsk variabel som heter feks "utrykk", som da er sant når pose er sann og sekk er false, eller sekk er true og pose er false..

 

i vb.net hadde det blitt feks: (tar det i vb.net for det kan jeg best :p)

 

if pose = true then
  if sekk = false then
  utrykk = true
  else
  utrykk = false
  end if

else if sekk = true then
 if pose = False then
	 utrykk = true
 else
	 utrykk = false
 end if

end if

 

Men det er tydligvis ikke det læreren er ute etter, han vi ha alt i en if-setning på en linje..

 

Noen som skjønner hvor han vil henn?

 

Takker!

Lenke til kommentar
Videoannonse
Annonse

if pose = true and sekk = true then

uttrykk = false // hvis begge er sanne så er uttrykket falskt//

else if pose = true and sekk = false or pose = false and sekk = true then

uttrykk = true // hvis en av dem er sanne og den andre er usann så er uttrykket sant //

end if

 

Nå har ikke jeg testet dette da og det er rimelig lenge siden jeg skrev noe som helst i java, men logikken virker grei for meg.

 

"Correct me if I'm wrong."

Lenke til kommentar

En XOR er da definért som en negert bikondisjonal som i sin tur er P implisert Q i en konjunksjon med Q implisert P.

 

Hvis jeg ikke tar feil er P implisert Q det samme som negert P i en disjunksjon med Q.

 

Deretter kan man vel lede negert P eller Q og negert Q eller P. En eller kan jo skrives som ikke ikke P og ikke Q. Det vil si at til slutt får man setningen

( ikke ( ikke ikke P ) og ( ikke Q ) ) og ( ikke ( ikke ikke Q ) og ( ikke P ) )

 

Med andre ord:

public static boolean xor(boolean pose, boolean sekk) {
	boolean result;
	result = !((!(!!pose && !sekk)) && (!(!!sekk && !pose)));
	return result;
}

 

For å gjøre alt om til kun bruk av sheffer stroke, må man i sin tur hive hver negasjon om til en nand, men det får bli en oppgave for leseren.

 

ellers kan man gjøre som jeg hintet i i posten over, bruke ^-operatoren

Lenke til kommentar

Takker for alle svar!

 

Men jeg har to oppgaver til som er litt kinkige: Jeg har løst dem slik som jeg i utgangspunktet løste den første, men lurer på hvordan det blir i ett utrykk, slik som den forrige ble løst. if(pose && !sekk || sekk && !pose)..

 

Vi har de boolske variablene ost, pepperoni og ananas. Lag et boolsk

uttrykk som er sant når pizzaen har ost og pepperoni, men ikke ananas.

 

Vi har de boolske variablene kryddermengde, forLite og forMye. Lag et

boolsk uttrykk som er sant når kryddermengden er mer enn for lite, og

mindre enn for mye.

Lenke til kommentar
nja.. trenger forsåvidt ikke det.. leste litt på nettet og kom frem til følgende løsninger:

 

if(pepperoni&&ost&&!ananas)

 

if(!forMye&&!forLite&&kryddermengde)

 

Riktig = true eller false? :)

 

Første der er riktig. Andre skjønner jeg ikke hvorfor du har med && kryddermengde. Eller, det jeg faktisk ikke skjønner er hvorfor det er boolske uttrykk, spesielt med tanke på at kryddermengde er med (Hvilken kryddermengder gir true tilbake?) Sikker på at de ikke er int/double? I så fall ville det blitt if(kryddermengde < forMye && kryddermengde > forLite).

 

Ellers burde du ha luft mellom variablene og operatorene dine for oversikt i koden. Så det blir:

if(pepperoni && ost && !ananas)

Lenke til kommentar
nja.. trenger forsåvidt ikke det.. leste litt på nettet og kom frem til følgende løsninger:

 

if(pepperoni&&ost&&!ananas)

 

if(!forMye&&!forLite&&kryddermengde)

 

Riktig = true eller false? :)

 

Første der er riktig. Andre skjønner jeg ikke hvorfor du har med && kryddermengde. Eller, det jeg faktisk ikke skjønner er hvorfor det er boolske uttrykk, spesielt med tanke på at kryddermengde er med (Hvilken kryddermengder gir true tilbake?) Sikker på at de ikke er int/double? I så fall ville det blitt if(kryddermengde < forMye && kryddermengde > forLite).

 

Ellers burde du ha luft mellom variablene og operatorene dine for oversikt i koden. Så det blir:

if(pepperoni && ost && !ananas)

 

Stusset også over at det var boolske utrykk i den kryddermengdeoppgaven.. fikk vite i dag at det var skrivefeil :) Men men, fikk alt riktig ihvertfall! yay! :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...