2011-01-26 1 views
0

Je comprends un peu les bases de ce qu'il fait, mais cela devient confus. Si quelqu'un pouvait le réécrire en pseudo code, ce serait grandement apprécié!Comprendre l'instruction IF

J'écris une application PHP et j'ai besoin du même algorithme en PHP, mais ça ne marche pas.

=IF(CC_stolpar=2; 
    IF(Antal_slanor<4; 
     6*Antal_dubbelgrind; 
     Antal_dubbelgrind*Antal_slanor*2) 
    + 
    IF(Antal_slanor<4; 
     3*Antal_enkelgrind; 
     Antal_enkelgrind*Antal_slanor); 
    0) 
+0

indice: lire comme IF (condition, puis, autre) –

+0

Merci PW. Et merci beth pour le montage. – qwerty

Répondre

0

Je ne sais pas pourquoi il est le test pour antal_slanor<4 deux fois, il devrait être équivalent à

=IF(CC_stolpar=2; 
    IF(Antal_slanor<4; 
     6*Antal_dubbelgrind    + 3*Antal_enkelgrind; 
     Antal_dubbelgrind*Antal_slanor*2 + Antal_enkelgrind*Antal_slanor); 
    0) 
0

Cela a imbriqué instructions IF, qui suivent le modèle IF-THEN-ELSE

IF (condition); what to do if condition is true; what to do if condition is false 

Alors votre IF externe est IF(CC_stolpar=2 THEN (do all this complicated stuff) ELSE 0.

C'est assez simple. Soit CC_stolpar soit 2 ou ne l'est pas, et s'il a une autre valeur que 2, le résultat est zéro.

Ce "truc compliqué" additionne les résultats de deux instructions IF différentes.

Le premier est

IF(Antal_slanor<4; 
6*Antal_dubbelgrind; 
Antal_dubbelgrind*Antal_slanor*2) 

Si Antal_slanor est inférieur à 4, puis multiplier Antal_dubbelgrind fois 6.

Si Antal_slanor est supérieur ou égal à 4, puis multiplier Antal_dubbelgrind fois Antal_slanor fois 2.

Vous obtiendrez seulement un résultat à partir de ceci, selon que Antal_slanor est inférieur ou égal à 4.

Vous répétez essentiellement le même processus pour l'autre IF et additionnez les résultats.

IF(Antal_slanor<4; 
3*Antal_enkelgrind; 
Antal_enkelgrind*Antal_slanor); 

Ces deux instructions IF imbriquées évaluent si Antal_slanor est inférieur à 4. Ainsi, vous pouvez les fusionner en un seul IF si cela fait sens pour vous. En fin de compte, je suggérerais pour votre propre santé mentale et la santé mentale des autres qui pourraient avoir à lire cela après vous, gardez la formule aussi simple que possible dans votre code.

0

Il suffit de regarder les pièces plutôt que dans une ligne. Comme un indice, CC_stolar = 2, le résultat est la somme de deux instructions IF imbriquées.

Peut-être quelques crochets contribueraient:

=IF(CC_stolpar=2; 
    { 
    IF(Antal_slanor<4; 
     { 
      6*Antal_dubbelgrind; 
     } else { 
      Antal_dubbelgrind*Antal_slanor*2) 
     } 
    +IF(Antal_slanor<4; 
     { 
      3*Antal_enkelgrind; 
     } else { 
      Antal_enkelgrind*Antal_slanor) 
     } 
    } else { 
     ;0) 
    } 
0
IF CC_poles == 2 then 
    IF NUMBER_OF_POLES < 4 THEN 
     RESULT = 6*NUMBER_OF_DOUBLE_GATES + 3* NUMBER_OF_SINGLE_GATES; 
     ELSE 
     RESULT= NUMBER_OF_DOUBLE_GATES*NUMBER_OF_POLES*2 + NUMBER_OF_SINGLE_GATES * 
       NUMBER_OF_POLES 
    ENDIF 
ELSE 
    RESULT = 0 
ENDIF