2017-10-17 3 views
-2
if (...)      //enough for promo 
{ 
    if (...)     //accept offer 
    **promo sequence** 
    else (...)    //doesn't accept offer (regular purchase) 
    **regular sequence** 
} 
else (...)     //not enough for promo 
**regular sequence** 

私はまだプログラミングを始めていません。私はループの中でプログラムを書くという仕事を与えられました。顧客は購入の切手を手に入れます。彼に十分な切手がある場合、彼は無料のアイテムを持つことができます。しかし、オファーを拒否すれば、それは通常の購入となり、スタンプの数はさらに増えます。私は正常に作業プログラムを書いていますが(それはかなり長いですが)、役立つならここに貼り付けることができます。if文を別の文に変更する

質問は次のとおりです。顧客が(通常のシーケンスを書き換えるのではなく)オファーを受け入れないと、何とか通常のシーケンスに行くことができますか?

ありがとうございました!

+3

通常のシーケンスを関数内に置き、両方の場所から呼び出すことができます。 – Steve

+1

(その点では、関数内にプロモーションシーケンスを入れてください) – Steve

+0

はい、ロジックを別の関数にリファクタリングしてから、両方のelseステートメントで関数を呼び出すことができます。 あなたも行くことができますが、それはgotoのひどい悪用になります。 – xyious

答えて

2

2件のチェックをマージしましたか?あなたはpromo sequenceregular sequenceのための関数を作成する反対している場合は、単一の組み合わせのチェックにif文ロジックを組み合わせることができます

if (... && ...) //enough for promo and accept offer 
    **promo sequence** 
else   //not enough for promo or doesn't accept offer (regular purchase) 
    **regular sequence** 
1

は、いくつかのオプションがあります。 frslmが示唆するように、あなたはそれを単一のifに変えることができます。プロモーションを提供して受け入れるロジックは、if文に入れるのが面倒です。その場合、プロモーションが受け入れられたかどうかを示すフラグとしてブール値を使用できます。

bool accepted_promo = false; 
if (...)      //enough for promo 
{ 
    ** steps to offer and accept a promo offer ** 
    if (...)     //accept offer 
    { 
     **promo sequence** 
     accepted_promo = true; 
    } 
} 

if (!accepted_promo) 
    **regular sequence**