#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. Какая глупая оплошность. Я искал не в тех местах. Большое спасибо.