while loop acting up... not doing what it should for some reason
<p>I have this code for a simple Dice throwing program with betting units and everything... you bet, if you get it right you get the amount u bet times the amount of dice you chose... if you're wrong but by a little (in the range of the number you picked +- the number of dice u picked) you don't lose anything, and if you're really off you lose...</p>

<p>I have a while loop that basically keeps 2 things in mind: as long as the user either has BUs or if they didn't type "no" or "No" for the try again... but for some reason it just doesn't work... lol. any ideas why? the betting system works, it recognizes that betting.currentBU == 0, but the while loop just won't react lol.</p>

<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;cstdlib&gt;
#include &lt;time.h&gt;
#include &lt;limits&gt;

using namespace std;

struct Dices{ // structure containing all the dice related integers
    int dice;
    int total;
    int  choice;
} Dices = {0,0,0};

struct betting{ // structure containing all the betting integers
    int currentBU;
    int bettedBU;
} betting = {100, 0};


int DiceThrow(int dicechoice, int totalnum){ // a method for the dice being rolled
    for(int i=1; i &lt;= dicechoice;i++){
            totalnum = totalnum + (rand() % 6 + 1); //total number, repeated by the loop for every dice
        }
    return totalnum;
}

int winningbet(int dicea, int cBU, int bBU){ // in case the user guesses it right
    std::cout &lt;&lt; "Congratulations, you got it right! \n";
    cBU = cBU + (dicea * bBU); // give him money...
    return(cBU);
}
int losingbet(int dicen, int totaln, int choicen, int cBU2, int bBU2){ //in case the user guesses wrong 
    if(choicen &gt; (totaln+dicen) || choicen &lt; (totaln+dicen)) // checks how wrong he is, if he's too off, he loses BUs
        cBU2 = cBU2-bBU2;
    else
        std::cout &lt;&lt; "you we're so close, you don't lose any BUs! \n"; //if he was really close, just let him know he was close
    return(cBU2);

}

int main(){
    string decision; // decision if they want to keep playing or not
    srand ( (unsigned int)time(NULL) );
    while(decision != "no" || decision != "No" || betting.currentBU != 0) // makes sure of the decision AND that he still has BUs
    {
        Dices.total = 0;
        std::cout &lt;&lt; "how many dice would you like to use? ";
        std::cin &gt;&gt; Dices.dice;
        std::cout &lt;&lt; "how many How many BUs are you betting?(" &lt;&lt; betting.currentBU &lt;&lt; " BUs left) ";
        std::cin &gt;&gt; betting.bettedBU;
        if(betting.bettedBU &gt; betting.currentBU){ // if he doesn't have enough BUs
            std::cout &lt;&lt; "Sorry, you don't have that many BUs...";
            std::cout &lt;&lt; "Want to try again with a different amount?(Yes/No) ";
            std::cin &gt;&gt; decision;
        }
        else{
            std::cout &lt;&lt; "guess what number was thrown: ";
            std::cin &gt;&gt; Dices.choice;
            Dices.total = DiceThrow(Dices.dice, Dices.total);
            if(Dices.choice == Dices.total){
                betting.currentBU = winningbet(Dices.dice, betting.currentBU, betting.bettedBU);
                std::cout &lt;&lt; "Want to try again?(Yes/No) ";
                std::cin &gt;&gt; decision;
            } else{
                std::cout &lt;&lt; "Sorry, the number was " &lt;&lt; Dices.total &lt;&lt; "... better luck next time \n" ;
                betting.currentBU = losingbet(Dices.dice, Dices.total, Dices.choice, betting.currentBU, betting.bettedBU);
                if(betting.currentBU &gt; 0){
                    std::cout &lt;&lt; "Want to try again?(Yes/No) ";
                    std::cin &gt;&gt; decision;
                }
             }

        }
    }
    if(betting.currentBU == 0){
        std:cout &lt;&lt; "sorry, you ran out of BUs...";
        std::cin.ignore( std::numeric_limits&lt;std::streamsize&gt;::max(), '\n' );
    }
    else{
        std::cout &lt;&lt; "your final BU count is: " &lt;&lt; betting.currentBU &lt;&lt; "\n";
        std::cout &lt;&lt; "Thanks for playing, see you next time! (Press ENTER to terminate...)";
        std::cin.ignore( std::numeric_limits&lt;std::streamsize&gt;::max(), '\n' );
    }
    return 0;

}
</code></pre>
