C++ В одномерном массиве в заданном пользователем диапазоне,найти сумму элементов,значения которых меньше указанного пользователем

Задание:

В одномерном массиве, заполненном случайными числами в заданном пользователем диапазоне,найти сумму элементов,значения которых меньше указанного пользователем.

Не могу понять, почему ответы больше чем должны бытьвведите сюда описание изображения

Мой код:

    #include <iostream> 
#include <random> 
#include <time.h> 
using namespace std;

    int main()
    {
        srand(time(NULL));
        int arr[10];
        cout << "Enter limit(less than 10): ";
        int n, sum = 0;
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            arr[i] = rand() % 15;
        }
        for (int i = 0;i < n;i++)
        {
            cout << arr[i] << "\t";
        }
        cout << "\n";
        int x, y;
        cout << "x = ";
        cin >> x;
        cout << "y = ";
        cin >> y;
        for (int i = 0; i < n; i++) {
            if (arr[i]<x) sum += arr[i];
            if (arr[i] > y) sum += arr[i];
        }

        cout << sum;
        return 0;
    }

Ответы (1 шт):

Автор решения: DmitryK

Правильно написал @Harry - Вы просто выбираете не числа из диапазона, y < number < x, а числа из 2 отдельных диапазонов y < number и number < x. Т.о. из вашего примера число 8 просуммируется дважды, т.к. оно больше 7 и меньше 10.
Должно быть примерно так:

        for (int i = 0; i < n; i++) 
            if (arr[i] < x && arr[i] > y) 
                sum += arr[i];

Ну и да - решение не соответствует условиям задачи. Вы ищете числа, попадающие в диапазон. А по условиям задачи должны генерировать числа (заполнять массив) из предопределенного диапазона, а потом в массиве искать числа, меньше определенного значения.

→ Ссылка