tershova
?>

Написать программу, определяющую сумму/количество элементов массива, значение которых больше 1 и меньше 5. на языке с++

Информатика

Ответы

Яна_Софья
#include <iostream>
#include <array>
#include <numeric>
using namespace std;

const size_t N = 10;

int main()
{
    size_t sum = 0;
    array<int, N> a = { 1, 5, 9, 6, 3, 0, 1, 4, -2, 4 };
    cout << "Count: ";
    cout << accumulate(a.cbegin(), a.cend(), 0, [&sum](size_t count, const int
                                                                                                                num) {
                                                    if (num > 1 && num < 5) {
                                                        ++count;
                                                        sum += num;
                                                    }
                                                    return count;
                                                });
    cout << " Sum: " << sum << endl;
}
oalexandrova75
972₁₀ = 1111001100₂
1. Число будет иметь минимальное значение, если в нем будет минимально возможное количество значащих разрядов. Таких циклическх сдвигов в данном случае возможно 2 (запишем их друг под другом):
0011001111 - циклический сдвиг на 4 разряда влево;
0011110011 - циклический сдвиг на 8 разрядов влево;
2. При равном количестве разрядов меньшим будет то число, у которого при просмотре разрядов слева направо встретится ноль, в то время как у второго в этом же разряде будет единица (это место выделено):
11001111 - это число меньшее из двух.
11110011
ответ: 11001111₂ = 207₁₀
Nivanova995
(1 + 0)*(0+0) + 1*0
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.

Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения

(1 + 0)*(0+0) + 1*0 

будет 0

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Написать программу, определяющую сумму/количество элементов массива, значение которых больше 1 и меньше 5. на языке с++
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Калмыкова-Петрунина
Шитенков
aobuhta4
Mikhailovna1444
annodomini1
pivenraisa
Vasileva
Guru-tailor
Andreevich
Anatolii
Станислав Валерий1696
Назаров588
Алексеевна_Валентиновна
Gpack54
fox-cab3444