Korzystasz z STL`a , metode:
void wyczysc() ...
Możesz zamienić na to, aby Twój globalny stos , zamieniał elementy z jakimś pustym lokalnym stosem np.
void wyczysc()
{
std::stack<double> emptyStack;
emptyStack.push(0);
wyniki.swap( emptyStack );
}
Taka luźna propozycja :). emptyStack przestaje istnieć po wyjściu z funkcji.
Edit: W Twoim programie można dzielić przez zero. W funkcji podziel nie masz sprawdzenia.