#c 11
#c 11
Вопрос:
Я создаю программу, в которой вы вводите количество игроков n, попытки троек, сделанные троечки, попытки двухочковых, сделанные двухочковые, попытки штрафных бросков, сделанные штрафные броски, затем я проверяю, что сделанных бросков не больше, чем попыток, и программа должна найти общий счет наиболее точного игрока (наиболее точным является тот, у кого больше всего попыток из всех бросков вместе взятых).
#include <iostream>
#include <vector>
using namespace std;
class Player {
private:
long int thra, thrm, twa, twm, fta, ftm;
public:
void Input() {
long int thra1, thrm1, twa1, twm1, fta1, ftm1;
cin >> thra1 >> thrm1 >> twa1 >> twm1 >> fta1 >> ftm1;
if (thrm1 <= thra1 amp;amp; twm1 <= twa1 amp;amp; ftm1 <= fta1) {
thra = thra1;
thrm = thrm1;
twa = twa1;
twm = twm1;
fta = fta1;
ftm = ftm1;
}
else {
returnFalse();
}
}
bool returnFalse() {
return false;
}
long int mostPoints() {
double acc = 0, maxacc = 0;
long int maxpts = 0;
if ((thra twa fta) > 0) {
acc = 100 * ((thrm twm ftm) / (thra twa fta));
}
else {
acc = 0;
}
if (acc > maxacc) {
maxacc = acc;
maxpts = (thrm) * 3 (twm) * 2 ftm;
}
return maxpts;
}
};
int main() {
int n;
cin >> n;
vector<Player*> players;
for (int i = 0; i < n; i ) {
Player *newPlayer = new Player();
newPlayer->Input();
players.push_back(newPlayer);
}
long int points = 0;
for (int i = 0; i < n; i ) {
points = players[i]->mostPoints();
}
cout << points;
}
При любом вводе ответ равен 0, и я не могу определить свою ошибку. Может кто-нибудь, пожалуйста, помочь?
Комментарии:
1. Я вижу целочисленное деление. Предполагаю, что проблема есть.
2. Также в
Input()
,returnFalse()
бессмысленно.3. я убедился, что не делю на ноль с помощью if, который проверяет, все ли попытки броска больше 0
4. Допустим, вы нанесли 3 броска из 5.
3 / 5 = 0
с целыми числами. Вам нужно перейти наfloat
илиdouble
.5. изменение с int на double помогло, по крайней мере, сейчас я получаю некоторый результат, я собираюсь проверить другие ошибки, потому что он по-прежнему выдает неверный результат