C/C++

Если массив из 10 элементов содержит хотя бы один нулевой элемент

, необходимо найти произведение элементов массива, расположенных до этого нулевого элемента. помогите пожалуйста, хотя бы подсказками. на с++
Жека Кот
Жека Кот
78
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <array>
#include <numeric>
#include <random>
using namespace std;
int main() {
uniform_int_distribution<> uid(0, 9);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
auto show = [](int x) { cout << setw(3) << x; };
auto zero = [](int x) { return! x; };
array<int, 10> box{};
generate(box.begin(), box.end(), rand);
for_each(box.begin(), box.end(), show);
puts("");
auto iter = find_if(box.begin(), box.end(), zero);
if (iter != box.end() || iter != box.begin()) {
auto mult = accumulate(box.begin(), iter, 1, multiplies<>());
cout << "Multiply: " << mult << '\n';
} else {
puts("Not found!");
}
system("pause > nul");
}
Евгений Муратханов
Евгений Муратханов
80 062
Лучший ответ
X:=1, k:=0
запускаешь цикл i=0 до 9, в цикле идет проверка на нулевость и если Ai=0, то цикл завершается, если нет, то X:=X*Ai, k:=k+1.
и в итоге если ни один элемент не равен нулю, т. е. k=10, то выводить надпись типа "нулевых элементов в массиве не обнаружено", если k<10, то выводить X
Если первый элемент массива А [0] нулевой, то перед ним элементов нет и перемножать нечего. В противном случае процедура такая:
p = 1; q = 0; for (i = 0; i < 10; i++)
{ if (A[i] == 0) { q = 1; break; }
else p *= A[i]; }
Получается произведение всех элементов, расположенных до первого нулевого, даже если такового и не существует. Зато если нулевой элемент всё же существует, можно напечатать полученное произведение, а если он так и не встретился, то и произведение не напечатается.
if (q) cout << p << endl;
Юрий Киреев
Юрий Киреев
29 440

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