Почему этот код алгоритма C с минимальной и максимальной валютой не работает? Используя этот код, я хочу извлечь минимальные и максимальные цены из торговли валютой

#c 17

Вопрос:

Взгляните на этот код. Я хочу извлечь минимальные и максимальные запрашиваемые цены и распечатать их как часть статистики:

     double OrderBook::getHighPrice(std::vector<OrderBookEntry>amp; orders)
        {
            // find the highest value in array of value
            double max = orders[0].price;
            for (OrderBookEntryamp; e : orders)
            {
                if (e.price > max)
                {
                    max = e.price;
                }
                return max;
            }
        }
        double OrderBook::getLowPrice(std::vector<OrderBookEntry>amp; orders)
        {
            // find the lowest value in array of value
            double min = orders[0].price;
            for (OrderBookEntryamp; e : orders)
            {
                if (e.price < min)
                {
                    min = e.price;
                }
                return min;
            }
        }
 

Вот выдержка из выходных данных, которые я получаю, макс и мин одинаковы:

     Product: BTC/USDT
     Asks seen: 50
     Max ask: 5352
     Min ask: 5352
     Product: DOGE/BTC
     Asks seen: 50
     Max ask: 3.1e-07
     Min ask: 3.1e-07
     Product: DOGE/USDT
     Asks seen: 50
     Max ask: 0.00165524
     Min ask: 0.00165524
     Product: ETH/BTC
     Asks seen: 50
     Max ask: 0.0218909
     Min ask: 0.0218909
     Product: ETH/USDT
     Asks seen: 50
     Max ask: 117.329
     Min ask: 117.329
    1: Print help
    2: Print exchange stats
    3: Make an offer
    4: Make a bid
    5: Print wallet
    6: Continue
    ==============
    Current time is: 2020/03/17 17:01:24.884492
    Type in 1-6
 

Я хочу убедиться, что макс и мин разные и правильные. Где я ошибаюсь? Пожалуйста, помогите.

Ответ №1:

Ты возвращаешься из-за for петель. Вам нужно подождать, пока все цены не будут проверены, а затем вернуться после for циклов:

     double OrderBook::getHighPrice(std::vector<OrderBookEntry>amp; orders)
    {
        // find the highest value in array of value
        double max = orders[0].price;
        for (OrderBookEntryamp; e : orders)
        {
            if (e.price > max)
            {
                max = e.price;
            }
        }
        return max;
    }
    
    double OrderBook::getLowPrice(std::vector<OrderBookEntry>amp; orders)
    {
        // find the lowest value in array of value
        double min = orders[0].price;
        for (OrderBookEntryamp; e : orders)
        {
            if (e.price < min)
            {
                min = e.price;
            }
        }
        return min;
    }
 

Комментарии:

1. Какая глупая оплошность. Я искал не в тех местах. Большое спасибо.