C/C++

Как записать из набора чисел первое четное и минимальное кратное 3

Пользователь вводит число x через цикл:
for (i=1;i<=n;i++)
cin >> n;
Чисел n заранее вводится пользователем.
Нужно из этого набора взять первое четное число и минимальное число кратное 3.
Странный цикл у тебя. Условие зависит от n, и он тут же в цикле и вводится. Так что подозреваю, что с таким циклом - никак.
Алексей Бобров
Алексей Бобров
60 852
Лучший ответ
// Из условия задания не совсем понятно, цель поиска.
// Первый вариант, ищет одно число, которое удовлетворяет сразу всем условиям: чётности, кратности и минимальности

#include <iostream>
using namespace std;
int main() {
auto min = numeric_limits<int>::max();
cout << "n: ";
size_t n;
cin >> n;
int x;
cout << ">>> ";
for (auto i = 0U; i < n; ++i) {
cin >> x;
if (0 == x % 6 && min > x) min = x;
}
if (min != numeric_limits<int>::max()) {
cout << "min: " << min << '\n';
} else {
puts("Not found!");
}
system("pause > nul");
}

// Второй вариант разделяет поиск и ищет два числа: первое – минимальное кратное трём; второе – первое чётное в последовательности

#include <iostream>
using namespace std;
int main() {
auto min = numeric_limits<int>::max();
cout << "n: ";
size_t n;
cin >> n;
int x;
cout << ">>> ";
auto flag = true;
int even;
for (auto i = 0U; i < n; ++i) {
cin >> x;
if (0 == x % 3 && min > x) min = x;
if (flag && ~x & 1) {
flag = !flag;
even = x;
}
}
if (min != numeric_limits<int>::max()) {
cout << "min: " << min << '\n';
} else {
puts("Min not found!");
}
if (!flag) {
cout << "even: " << even << '\n';
} else {
puts("All odd! Sorry...");
}
system("pause > nul");
}
Серик Сыбан
Серик Сыбан
66 407
какой то бессмысленный цикл

Похожие вопросы