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 шт):
Правильно написал @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];
Ну и да - решение не соответствует условиям задачи. Вы ищете числа, попадающие в диапазон. А по условиям задачи должны генерировать числа (заполнять массив) из предопределенного диапазона, а потом в массиве искать числа, меньше определенного значения.