Регистрация
29 Авг 2013
Сообщения
71
Репутация
0
Спасибо
0
Монет
0
Наименьший положительный

Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент.



Входные данные



В первой строке содержится натуральное число 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(n);

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, ПОМОГИТЕ НАЙТИ ОШИБКУ
 
Ваш код работает правильно, но есть небольшая ошибка в условии поиска минимального значения. В условии у вас стоит “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(n);
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, ПОМОГИТЕ НАЙТИ ОШИБКУ
 
потому что в условии: v >= 0
 
int n;
cin >> n;
vector v(n);
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(n);
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
 
Назад
Сверху