2010-10-20 5 views
0

Les paramètres suivants sont donnés:code minimal, réduire l'expression

boolean a = true ; 
boolean b = false ; 
boolean c = true ; 

Je veux avoir un minimum de code de cette version:

if ((a && ! b) || (! a && b)) { 
    z1 += 99 ; 
} 

if (a^b) { 
    z1 += 19 ; 
} 

if ((a && b) || (! a && ! b)) { 
    z1 += 118; 
} 

Que faut-il être modifié?

+2

Ça sent les devoirs ... –

+0

Les devoirs? Vous avez les valeurs de a et b pour que vous puissiez déterminer quelles clauses if sont vraies et donc ce qui arrive à z1. si vous voulez une version simplifiée pour tout a/b alors je ne sais pas pourquoi vous donnez des valeurs ... –

Répondre

9

La première condition est la même que la deuxième, la troisième est la négation des autres, nous avons donc

if (a^b) { 
    z1 += 99 + 19 // = 118 
} else { 
    z1 += 118 
} 

Nous pouvons raccourcir ce nouveau, quel que soit a ou b est, z1 est augmentée de 118, donc nous avons juste

z1 += 118 
+1

Gosh! Je n'ai pas vu celui-là venir! – Riduidel

+0

le code devrait faire la même chose avec a, b, c donné, de sorte que la première et la deuxième condition ne seraient pas les mêmes? –

+0

Faites une table de vérité si vous ne me croyez pas, les deux conditions sont les mêmes quel que soit a ou b ... – Julien

1
if ((a && ! b) || (! a && b)) { 
} 

vous pouvez utiliser

if (a!=b) { 
} 

if ((a && b) || (! a && ! b)) {} 

vous pouvez utiliser

if(a==b){} 

if (a^b) {} 

est ok à sa place

2

Si vous avez besoin de comprendre des choses comme ça à l'avenir, alors vous voudrez peut-être essayer d'écrire une table (je pense que son appelé une table de vérité, mais certains du plus mathématiquement occupé ici peut me corriger) montrant tout possible dans puts et leurs résultats respectifs. Une fois que vous avez écrit le tableau, vous devriez pouvoir identifier rapidement la logique globale et éventuellement la simplifier.

Pour ce qui précède, une table pourrait ressembler à ceci;

a | b | z1 
------------------ 
    t | t | 
    t | f | 
    f | t | 
    f | f | 

Parcourez chaque ligne et écrivez les effets de z1 dans la colonne. Cela devrait vous permettre de déterminer facilement ce qui se passe et de le raccourcir, si possible.

Questions connexes