Здравствуйте, есть такое задание:
Дано количество бросков, брошенных баскетболистами из зон разных точек. Подсчитайте, сколько очков набрал самый точный баскетболист. В первой строке записано целое число n (1 ≤ n ≤ 100). Ниже представлены двухочковые (броски, попадания), трехочковые (броски, попадания) и штрафные броски (броски, попадания).

Я написала код и вроде бы всё правильно, но всёравно ответ не совпадает (у меня 944 а должен быть 2338) может кто нибудь знает почему? Код и input в txt файле

Приложения:

Леганда555: на c++ можно свой код прислать? или с твоим кодом поразбираться?
koko896: Можно и свой, если так будет проще))
Леганда555: а ответ точно должен быть 2338?
Леганда555: как я понял нужно сложить все полученные очки. То есть количество двухочковых на два умножить + количество трёхочковых умножить на 3 + штрафные?
Леганда555: тогда самая выгодная строчка: 936 636 902 822 182 93
Леганда555: но ответ выходит 3831
koko896: Да, там нюанс один, нужно найти самого точного баскетболиста, на сколько я понимаю, это тот который бросая попал больше раз то есть все броски минус все попадания (без умножения на 2 и 3) и тогда смотреть по наименьшему вычетанию.... но так тоже не выходит
Леганда555: всё я понял
Леганда555: решил

Ответы

Ответ дал: Леганда555
1

В задании ведь чётко сказано: "Подсчитайте, сколько очков набрал самый точный баскетболист". Значит находим самого точного, путём деления всех голов на все броски. И выводим его суммарные очки. Вот правильно работающее решение:

#include <iostream>

using namespace std;

int main() {

int n;

cin >> n;

double max_accur = 0;

int ans = 0;

for (int i = 0; i < n; ++i) {

 double a_all, a_goal, b_all, b_goal, c_all, c_goal;

 cin >> a_all >> a_goal >> b_all >> b_goal >> c_all >> c_goal;

 double accur = (a_goal + b_goal + c_goal) / (a_all + b_all + c_all);

 if (accur > max_accur) {

  max_accur = accur;

  ans = int(a_goal * 2 + b_goal * 3 + c_goal);

 }

}

cout << ans;

}


Леганда555: на тест из файла выводит 2338, что и должно быть
Вас заинтересует