Ваш код работает правильно, но есть небольшая ошибка в условии поиска минимального значения. В условии у вас стоит “minn >= v”, но должно быть “minn > v” (без равенства).
Тогда, если все положительные элементы в массиве больше минимального, программа правильно находит это минимальное значение. Если же есть элемент, равный minn, он перезаписывается этим элементом, и программа выводит его.
Дмитрий Трусов, открыт менее минуты назад
VECTOR c++ ПОМОГИТЕ
Наименьший положительный
Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент.
Входные данные
В первой строке содержится натуральное число n
(n⩽100
) — количество элементов в массиве. В следующей строке содержатся n
чисел — элементы массива. Гарантируется, что значения всех элементов — целые числа, не превосходящие 100
по абсолютному значению.
Выходные данные
Выведите ответ к задаче.
Примеры
Ввод
Вывод
5
-1 -10 2 6 7
Мой код
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,minn=0;
cin >> n;
vector<int> v;
for(int i=0;i<n;i++){
cin >> v;
}
for(int i=0;i<n;++i){
if(minn >= v && v>=0){
minn = v;
}
}
cout << minn;
return 0;
}
ПРИ ВВОДЕ ЧИСЕЛ ПОЛУЧАЕТСЯ 0, ПОМОГИТЕ НАЙТИ ОШИБКУ
int n;
cin >> n;
vector v;
for (auto &t : v) { cin >> t; }
int min = 0;
for (auto t : v) {
if (t > 0 && (t < min || min == 0)) { min = t; }
}
cout > n;
while (n-- > 0) {
cin >> t;
if (t > 0 && (t < min || min == 0)) { min = t; }
}
cout
#include
#include
#include
#include
using namespace std;
int main() {
size_t n;
cin >> n;
vector vec;
for (auto& x : vec) cin >> x;
auto cmp = [](int a, int b) {
if (a < 0) a = numeric_limits::max();
if (b < 0) b = numeric_limits::max();
return a < b;
};
auto pos = min_element(vec.begin(), vec.end(), cmp);
cout