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?
Вам нужно сравнить число против мин. Вы просто ищете последнее число, которое меньше, чем следующее число, и 3 <44.
Как сказал Кенни, вы должны сравнить его с мин. Это будет выглядеть так:
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);
}
Предположим, что ваш первый элемент является минимальным и начинает сравнивать со вторым элементом. Если другой элемент меньше, чем ранее установленный элемент (изначально первый элемент), то установите этот элемент как новый элемент.
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;
}
и, кстати, вы можете перегрузить оператор индекса '[]', чтобы установить/получить элементы точно так же, как массив