Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

ПРОГРАММИРОВАНИЕ НА С++

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

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

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

По дате
По рейтингу
Аватар пользователя
Новичок
3мес

Попробуй так.
#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;
}

Аватар пользователя
Высший разум
3мес
12345678910111213
 #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';
} 
Аватар пользователя
Высший разум
3мес

Если минимально менять твой код:

123456789101112131415161718
 #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 вообще не нужен:

12345678910111213
 #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';
} 
Аватар пользователя
Гений
3мес

>В ОТВЕТ ВЫХОДЯТ НУЛИ!!!! ПОЧЕМУ???
Потому что минимум изначально принят за 0, а наименьший ищется только из положительных чисел.

Аватар пользователя
Ученик
3мес

Я пью энергетики я крутой