Нужна помощь в поиске минимального значения в векторе, который заполнен пользовательским вводом

0
double find_min(sample &s){
    double i = 0;
    double min;
    for (i; i < s.get_data().size() - 1; i++){
        if (s.get_data().at(i) < s.get_data().at(i + 1)){
            min = s.get_data().at(i);
        }
        else{
            min = s.get_data().at(i + 1);
        }
    }
    return min;
}

Я пытаюсь найти минимальное значение для вектора, заполненного входом пользователя. Когда небольшое число, x и все остальные числа после него больше, чем x; функция работает нормально.

Однако, когда число, меньшее, чем x, позволяет вызвать его y, появляется после x, функция возвращает y.

Пример 1: векторные значения функции [23,44,55,1,66,77] → будут правильно возвращать 1;

Пример 2: векторные значения функции [23,44,55,1,3,44] → возвращают 3?

  • 0
    Используйте целочисленный тип для индекса, предпочтительно size_t, потому что он соответствует возвращаемому значению size ().
Теги:
vector
search
minimum

3 ответа

1
Лучший ответ

Вам нужно сравнить число против мин. Вы просто ищете последнее число, которое меньше, чем следующее число, и 3 <44.

  • 0
    Ах, спасибо, это работает сейчас!
  • 0
    @RIfRahman, если вам нравится ответ, не стесняйтесь голосовать за ответ (взаимопонимание это)
Показать ещё 2 комментария
0

Как сказал Кенни, вы должны сравнить его с мин. Это будет выглядеть так:

double find_min(sample &s){
  double i = 0;
  int min_index = 0;
  for (i; i < s.get_data().size() - 1; i++){
    if (s.get_data().at(i) < s.get_data().at(min_index)){
      min_index = i;
    }
  }
  return s.get_data().at(min_index);
}
0

Предположим, что ваш первый элемент является минимальным и начинает сравнивать со вторым элементом. Если другой элемент меньше, чем ранее установленный элемент (изначально первый элемент), то установите этот элемент как новый элемент.

double find_min(sample &s)
{
  double min  = s.get_data().at(0);

  for (int i=1; i < s.get_data().size() - 1; i++)
  {
    if (s.get_data().at(i) < min)
    {
      min = s.get_data().at(i);
    }
  }
  return min;
}

и, кстати, вы можете перегрузить оператор индекса '[]', чтобы установить/получить элементы точно так же, как массив

Ещё вопросы

Сообщество Overcoder
Наверх
Меню