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

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

Тема в разделе 'C/C++', создана пользователем mirthost, 14 окт 2017.

  1. TopicStarter Overlay

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

    Сообщения:
    506
    Лайки:
    236
    Пол:
    Мужской
    Репутация:
    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
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    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;
    }
    mirthost, devbola и Samuel нравится это.
  4. Penelope Пользователи

    Сообщения:
    124
    Лайки:
    74
    Репутация:
    1
    Где лайк Гадесу? День прошёл, а ты ему лайк не поставил. Тут всё правильно!
Черновик сохранён Черновик удалён
Similar Threads
  1. ham4ik
    Ответов:
    1
    Просмотров:
    963
  2. vladimp
    Ответов:
    11
    Просмотров:
    1.332
  3. w1stl3r
    Ответов:
    11
    Просмотров:
    2.293
  4. NiceCat
    Ответов:
    1
    Просмотров:
    1.454
  5. ПОЧЕТНЫЙ
    Ответов:
    7
    Просмотров:
    1.250
Загрузка...

Поделиться этой страницей