Другие языки программирования и технологии

C++ help

Выполняю л. р, но проблема в одном месте. Опуская все задания кроме одного мне нужно, вывести на экран минимальный элемент кратности 5. Что бы не делал не получается
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int mas[9];
int sum = 0, sh = 0, min=250;
cout << "Введите элементы массива состоящий из 9 чисел" << endl;
for (int i = 0; i < 9; i++)
{
cout << endl << i + 1 << ")"; cin >> mas[i];
if (mas[i] < 0)
{
sh++;
sum += mas[i];
}
}
for (int i = 0; i < 9; i++)
{
if (mas[i] % 5==0 && mas[i] < min)
{
min = mas[i];
}
else
{
min = 250;
}

}

cout << "Mas[9]=";
for (int i = 0; i < 9; i++)
{
cout << mas[i] << ", ";
}
if (min != 250)
{
cout << endl << "Минимальный элемент: " << min;
}
else
{
cout << endl << "В данном массиве нет значений кратности 5";
}
cout << endl << "Количество отрицательных элементов: " << sh;
cout << endl << "Сумма отрицательных элементов: " << sum;
cout << endl;
system("pause");
return 0;
}
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int a[] = { 1, 3, 12, 55, 4, 15, 7, 63, 2, 10, 90, 35, 7, 11 };
for (auto &i : a) cout << setw(4) << i;
int mn = INT_MAX;
for (auto &i : a) {
if (i % 5) continue;
if (mn > i) mn = i;
}
if (mn != INT_MAX) cout << "\n\tMin: " << mn << endl;
cin.get();
}
Александр Шамрай
Александр Шамрай
93 876
Лучший ответ
Конечно. Посмотрите на тело цикла

if (mas[i] % 5==0 && mas[i] < min)
{
min = mas[i];
}
else
{
min = 250;
}

Если попадается элемент не соотв. mas[i] % 5==0 && mas[i] < min, то min становится = 250
Прокрутите в голове. .
min = 250
вводим 5, выполняется условие mas[i] % 5==0 && mas[i] < min => min=5
вводим 6, не выполняется условие mas[i] % 5==0 && mas[i] < min => min=250
----
else
{
min = 250;
}
Надо вообще убрать
P.S: INT_MAX это всё замечательно и надо использовать и уж если на то пошло, то и STL, только я про алгоритмическую ошибку и что надо конкретно исправить в решении =)
http://ideone.com/H0V2iL - вот максимально близко к вашему. А вообще советую использовать вариант который предложил Николай Веселуха
Выше правильный ответ. Компилятор должен поддерживать range-based for (C++11)