Не получается сделать задание по массивам [закрыт]

195
06 января 2022, 00:30
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 2 года назад.

Улучшить вопрос

Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне [ A , B ] и определяет количество положительных трёхзначных чисел в этом массиве, которые не делятся на 5.

Входные данные

Входная строка содержит три числа: границы диапазона случайных чисел A и B , а также размер массива N . Все числа разделены пробелами. Гарантируется, что 0 < N ≤ 10000 .

Выходные данные

В первой строке программа должна вывести N элементов построенного массива, разделив их пробелами, а во второй строке – количество трёхзначных чисел в массиве, которые не делятся на 5.

Примеры Входные данные

50 200 10

Выходные данные

50 54 180 80 91 151 98 74 106 114
3

Мой код:

#include <iostream>
#include <vector>
#include <cstdlib>
#include <time.h>
using namespace std;
int main()
{
    int a, b, n;
    cin >> a >> b >> n;
    if(n>10000) n = 10000;
    vector<int> v(n);
    srand(time(0));
    for(int i = 0; i < v.size(); ++i)
    {
        v[i] = rand()%(b-a+1) + a;
        cout << v[i] << " ";
    }
    for (int i = 0; i < v.size(); ++i)
        if ((v[i]>99) && (v[i]<1000) && (v[i]%5!=0))
            cout << v[i] <<" ";    
    return 0;
}

Проблема в том,что не знаю как сделать подсчет чисел не кратных 5

Answer 1
int neKratnyh5 = 0;
for (int i = 0; i < v.size(); ++i) {
  if (v[i] > 99 && v[i] < 1000 && v[i] % 5) {
    neKratnyh5++;
  }
}
cout << "\n" << neKratnyh5;
Answer 2

Когда что-то решаете, в первую очередь - продумайте механизмы решения, распишите в псевдокоде или блок-схему сделайте там .... Дальше зайдите на cppref и подумайте какие алгоритмы Вам подойдут.

Тут явно выход std::count_if - он подсчитает кол-во элементов удовлетворяющих предикату

Вот пример кода, ввод данных организуете сами.

#include <vector>
#include <iostream>
#include <iterator>
#include <random>
#include <functional>

std::vector<int64_t> GenVector(uint64_t size, uint64_t low_bound, uint64_t hight_bound) {
    std::vector<int64_t> vec(size);
    std::mt19937_64 generator(std::random_device{}());
    std::uniform_int_distribution<> uid(low_bound, hight_bound);
    auto gen{ std::bind(uid, generator) };
    std::generate(std::begin(vec), std::end(vec), gen);
    return std::move(vec);
}

int main()
{
    const uint64_t size{100'000};
    const uint64_t low_bound{0};
    const uint64_t hight_bound{2'000};
    auto vec{ GenVector(size, low_bound, hight_bound) };
    std::copy(std::begin(vec), std::end(vec), std::ostream_iterator<uint64_t>{std::cout, " "});
    std::ostream_iterator<char>(std::cout, "") = '\n';
    std::ostream_iterator<uint64_t>(std::cout, "\n") = std::count_if(vec.begin(), vec.end(), [](int64_t i) {return i > 99 && i < 1000; });
    return 0;
}
READ ALSO
Быстродействие объединения строк

Быстродействие объединения строк

Какой способ объединения строк следует когда использовать

95
Как получить объект нужного типа?

Как получить объект нужного типа?

У меня есть список с формами(SystemWindows

176
Форма закрывается с ошибкой

Форма закрывается с ошибкой

Пытаюсь сделать так, чтобы при изменении значения в comboBox база данных выводилась в datagridviewВроде бы все работает, но при закрытии формы выдает...

103
Строки в c#. String \ StringBuilder

Строки в c#. String \ StringBuilder

Ребят, у меня возникли вопросы по строкам в c#

101