1. 游客, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Подскажите с решением

本贴由 mirthost2017-10-14 发布. 版块名称: C/C++

  1. TopicStarter Overlay

    mirthost Пользователи

    帖子:
    509
    支持:
    241
    性别:
    Репутация:
    7
    Команда:
    free
    Есть некоторый массив N игроков, которые получили N количество очков, необходимо убрать из выдачи "отстающих" по очкам, пересчитать очки.

    На примере это выглядит так: 5 игроков, пусть это будут user_0, user_1, user_2, user_3, user_4.

    Получили очки:
    user_0 = 5
    user_1 = 10
    user_2 = 15
    user_3 = 25
    user_4 = 30

    30 тут максимальное достижение, значит берем 30 за 100% и убираем из выдачи игроков которые попадают в 30%, пересчитываем очки с соответствии с порезкой 30%.

    user_0 выкидывается.
    user_1 получает 1 очков.
    user_2 получает 6 очков.
    user_3 получает 16 очков.
    user_4 получает 21 очков.

    Игроки и очки плавающее значение, не фиксированное.

    Второй день пытаюсь найти решение, но дальше объявления переменных мне все не нравится и решение не найдено. Чую тут должно быть простое решение в пару строчек.
  2. JoLan Команда форума Администратор AngeliCore Программист

    帖子:
    1,061
    支持:
    948
    性别:
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Попробуй почитать про std::vector.
  3. Гадес ОРБИТАЛЬНЫЙ ПОДЖИГАТЕЛЬ Old school Пользователи Ты здесь Господи? Это я, Дин Винчестер

    帖子:
    544
    支持:
    354
    性别:
    Репутация:
    8
    Команда:
    DeBalance Art Team
    Страна:
    Russian Federation Russian Federation
    Ну давай попробуем. Вариант на пыхе.
    PHP:
    function getWeights(array $arr = [])
    {
        if(empty(
    $arr) || !is_array($arr)) die(); //TODO: errors handling
      
        
    $top max($arr);
        if(
    $top <= 0) die(); //TODO: errors handling
      
        
    $bottom $top*30/100;
        if(
    $bottom <= 0) die(); //TODO: errors handling
      
        
    foreach($arr as $index => $value)
        {      
            if(
    $value <= $bottom || intval($value) <= 0){
                unset(
    $arr[$index]);
                continue;
            }
            else
            {
                
    $arr[$index] = $value $bottom;
            }
        }
      
        return !empty(
    $arr) ? $arr false;
    }
    已获得mirthostdevbolaSamuel的支持.
  4. Penelope Пользователи

    帖子:
    124
    支持:
    74
    Репутация:
    1
    Где лайк Гадесу? День прошёл, а ты ему лайк не поставил. Тут всё правильно!
Черновик сохранён Черновик удалён

分享此页面