

ПРОГРАММИРОВАНИЕ НА С++
Наименьший положительный
Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент.
Входные данные
В первой строке содержится натуральное число n
(n⩽100
) — количество элементов в массиве. В следующей строке содержатся n
чисел — элементы массива. Гарантируется, что значения всех элементов — целые числа, не превосходящие 100
по абсолютному значению.
Выходные данные
Выведите ответ к задаче.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
int min=0;
vector <int> v(n);
for (int i=0; i<n; ++i) {
cin >> v[i]; }
for (int i = 0; i < n; ++i) {
if (v[i]<min && v[i]>=0) {
min=v[i];
} cout << min << endl;
}
return 0;
}
В ОТВЕТ ВЫХОДЯТ НУЛИ!!!! ПОЧЕМУ??? ПРОШУ ПОМОЧЬ ИСПРАВИТЬ МОЙ КОД!!! я только начинаю программировать, мне понятны только те вещи, которыми я в своем коде пользуюсь!!! заранее спасибо=0
Попробуй так.
#include <iostream>
#include <climits>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int min_positive = INT_MAX;
for (int i = 0; i < n; i++) {
if (arr[i] > 0 && arr[i] < min_positive) {
min_positive = arr[i];
}
}
cout << min_positive << endl;
return 0;
}
#include <iostream>
#include <limits>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v(n);
for (auto& x : v) cin >> x;
auto min = numeric_limits<int>::max();
for (auto x : v) if (x < min && x > 0) min = x;
cout << min << '\n';
}
Если минимально менять твой код:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
int min=200; // заведомо больше максимально возможного 100
vector <int> v(n);
for (int i=0; i<n; ++i) {
cin >> v[i]; }
for (int i = 0; i < n; ++i) {
if (v[i]<min && v[i]>0) { // 0 - не положительное число
min=v[i];
} cout << min << endl;
}
return 0;
}
Но vector вообще не нужен:
#include <iostream>
using namespace std;
int main() {
int n, min = 200, t;
cin >> n;
while (n-- > 0) {
cin >> t;
if (t > 0 && t < min) { min = t; }
}
cout << min << '\n';
}
>В ОТВЕТ ВЫХОДЯТ НУЛИ!!!! ПОЧЕМУ???
Потому что минимум изначально принят за 0, а наименьший ищется только из положительных чисел.
Я пью энергетики я крутой