Не может вычислить уравнение, всегда дает ноль

Я что-то пропустил? Переменная процент_ всегда равна 0. Я проверил nTimes и выигрыш, они дают правильные значения в качестве того, что вводится. Даже когда я проверяю простое уравнение, например, процент_ = 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();
}

0

Решение

Пытаться

float (winnings) /nTimes*100

вместо.

Ваша версия все еще преобразует int0 на поплавок.

Если один операнд / это поплавок, это будет работать.

1

Другие решения

+ Изменить

percentage_ = float (winnings/nTimes*100);

в

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

так как вам нужно изменить 1 число для плавания, чтобы деление работало на плаваниях.

0

По вопросам рекламы [email protected]