с++ где-то там..
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;
int main (void)
{
const size_t n = 10; // размер массива
const int m = 4; // заданное число m
int arr[n] = {1,5,7,5,6,3,4,2,6,2}; // массив
for_each(begin(arr), end(arr), [](int x){ cout << x << " ";}); // массив на экран
cout << endl << "m = " << m << endl << endl; // m на экран
int count = count_if(begin(arr), end(arr), [m](int x) {return x<=m;}); // количество элементов <= m
cout << "Count = " << count << endl;
if(!count) return 0;
int product = accumulate(begin(arr), end(arr), 1, [m](int p, int x){return p *= (x<=m)?x:1;}); // произведение элементов <= m
int sum = accumulate(begin(arr), end(arr), 0, [m](int s, int x){return s += (x<=m)?x:0;}); // сумма элементов <= m
int krat = count_if(begin(arr), end(arr), [m](int x) {return x && !(x%m);}); // количество элементов кратных m
cout << "Product = " << product << endl;
cout << "Sum = " << sum << endl;
cout << "Krat = " << krat << endl;
return 0;
} |
|
или:
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;
int main (void)
{
const size_t n = 10; // размер массива
const int m = 4; // заданное число m
int arr[n] = {1,5,7,5,6,3,4,2,6,2}; // массив
for_each(begin(arr), end(arr), [](int x){ cout << x << " ";}); // массив на экран
cout << endl << "m = " << m << endl << endl; // m на экран
int count = count_if(begin(arr), end(arr), [m](int x) {return x<=m;}); // количество элементов <= m
cout << "Count = " << count << endl;
if(count == 0) return 0;
int product = accumulate(begin(arr), end(arr), 1, [m](int p, int x){return p *= (x<=m)?x:1;}); // произведение элементов <= m
int sum = accumulate(begin(arr), end(arr), 0, [m](int s, int x){return s += (x<=m)?x:0;}); // сумма элементов <= m
int krat = accumulate(begin(arr), end(arr), 0, [m](int k, int x){return k += (x && !(x%m))?1:0;}); // количество элементов кратных m
cout << "Product = " << product << endl;
cout << "Sum = " << sum << endl;
cout << "Krat = " << krat << endl;
return 0;
} |
|
минус этих программ в том, что вы 5 раз запускаете по сути один и тот же цикл. Без всяких лямбд будет чуть побольше кода, зато инклудов будет меньше (а значит и размер бинарника будет меньше), да и работать будет быстрее:
C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #include <iostream>
using namespace std;
int main (void)
{
const size_t n = 10; // размер массива
int i, c=0, p=1, s=0, k=0, m=4; // переменные-счетчики, заданное число m
int a[n] = {1,5,7,5,6,3,4,2,6,2}; // элементы массива
for (i=0; i<n; i++)
{
cout << a[i] << " "; // выводим массив на экран
if (a[i] <= m)
{
c++; // количество элементов массива <= m
p *= a[i]; // произведение элементов <= m
s += a[i]; // сумма элементов <= m
}
if (a[i] != 0 && a[i]%m == 0) k++; // количество кратных m
}
cout << endl << "m = " << m << endl << endl; // заданное число на экран
cout << "Count = " << c << endl; // количество элементов <= m
if (c == 0) return 0;
cout << "Product = " << p << endl; // произведение элементов <= m
cout << "Sum = " << s << endl; // сумма элементов <= m
cout << "Krat = " << k << endl; // количество элементов кратных m
return 0;
} |
|
а главное, прочитать код и понять логику программы куда проще.
1
|