C/C++
Если массив из 10 элементов содержит хотя бы один нулевой элемент
, необходимо найти произведение элементов массива, расположенных до этого нулевого элемента. помогите пожалуйста, хотя бы подсказками. на с++
#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");
}
#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");
}
X:=1, k:=0
запускаешь цикл i=0 до 9, в цикле идет проверка на нулевость и если Ai=0, то цикл завершается, если нет, то X:=X*Ai, k:=k+1.
и в итоге если ни один элемент не равен нулю, т. е. k=10, то выводить надпись типа "нулевых элементов в массиве не обнаружено", если k<10, то выводить X
запускаешь цикл 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;
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;
Похожие вопросы
- Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.
- Дан целочисленный массив с количеством элементов п. Сжать массив, выбросив из него каждый второй элемент.
- Задачка на C++ на формирование массива из 10 записей
- Заменить нулями элементы массива, которые расположены между первым минимальным и последним максимальным элементами масси
- Создать одномерный массив, состоящий из n вещественных элементов. Элементы массива определить при помощи случайных чисел
- С++ | Как заменить макс. элементы (могут быть введены любые) массива на нули и вывести изменённый массив уже с нолями?!
- Как работать с элементами динамического массива из функции?
- Задачка по СИ на вставку элемента в динамический массив.
- Написал функцию, которая добавляет элемент в конец массива, как можно улучшить? Нули не учитываются.
- Массив Х [36] целых элементов задать датчиком случайных чисел.