0

私は何か見落としてますか?変数 percent_ は常に 0 です。nTimes と wins を確認しましたが、入力されているものとして正しい値を示しています。パーセンテージ_= 1 + 1のような単純な方程式をテストしても、パーセンテージ_は0になります.誰か助けてくれますか?

    #pragma once
    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <iomanip>

    using namespace std;


    class GuessMachine
    {
    private:
        int nTimes;
        int winnings;
        string nM[6];

    public:
        GuessMachine();
        void displayPrizes();
        void displayMenu();
        int getInput();
        void checkNumber();
        void checkPrize();
    };



    void GuessMachine::checkPrize()
    {
        MagicNumber mn;
        int prize_=mn.generateNumber();
        float percentage_;

        percentage_ = float (winnings/nTimes*100); //<--On this line percentage is always 0 no matter what winnings and nTimes are
        cout<<"Percentage is "<<percentage_<<endl; 

        if(percentage_ >= 50)
        {
            cout<<"You have scored "<<percentage_<<"% and won "<<nM[prize_];
        }
        else
        {
            cout<<"You have scored "<<percentage_<<"%. You lose!!";
        }

        cin.ignore();
        cin.ignore();
    }
4

2 に答える 2

1

試す

float (winnings) /nTimes*100

代わりは。

intあなたのバージョンはまだ-0を float に変換します。

1 つのオペランド to/が float の場合、それは機能します。

于 2012-10-14T09:31:27.880 に答える
0

変化する

percentage_ = float (winnings/nTimes*100);

 percentage_ = (float(winnings))/nTimes*100;

除算が浮動小数点数で機能するには、1 つの数値を浮動小数点数に変更する必要があるためです。

于 2012-10-14T09:33:27.783 に答える