Подсчет чисел в интервале в серии чисел

0

Поэтому у меня есть ряд чисел, которые будут останавливаться, когда вы вводите число, которое делится на 3. Я должен подсчитать числа из этой серии, которые также включены в заданный интервал (например, [a, b]), а затем показывают их.

#include <iostream>
using namespace std;

int main() {
    unsigned n, a, b, k = 0, x;
    cout << "a="; cin >> a;
    cout << "b="; cin >> b;
    cout << "n="; cin >> n;
    while(!(n % 3 == 0))
    {
        if (a < n && n < b)
        {
            k++;
            x = n;
        }

        cout << "n="; cin >> n;
    }

    cout << "No. of numbers from the interval " << k << endl;
    cout << "The numbers from the interval " << x << endl;

    return 0;
}

Если я приведу, например, 7 номеров, он покажет мне значение k 6 и x 4294967294. Для a и b я использовал значения 1 и 79 и я дал только n значений от 1 до 20.

  • 0
    Вы никогда не устанавливаете x , поэтому неудивительно, что он дает такой результат.
  • 0
    @chris Я пытался дать x значение n, когда оно находится в этом интервале, но, видимо, это не сработало: /
Показать ещё 7 комментариев
Теги:
while-loop

1 ответ

0

Следующие могут помочь: https://ideone.com/Ig8PEd

#include <iostream>
#include <vector>

int main() {
    unsigned n, a, b;
    std::cout << "a="; std::cin >> a;
    std::cout << "b="; std::cin >> b;
    std::cout << "n="; std::cin >> n;
    std::vector<int> v;
    while (n % 3 != 0) {
        if (a < n && n < b) {
            v.push_back(n);
        }
        std::cout << "n="; std::cin >> n;
    }

    std::cout << "No. of numbers from the interval " << v.size() << std::endl;
    std::cout << "The numbers from the interval:" << std::endl;
    for (std::size_t i = 0; i != v.size(); ++i) {
        std::cout << v[i] << " ";
    }
    return 0;
}
  • 0
    Да, это работает, но больше половины этого кода я не понимаю. Я довольно новичок в C ++. Кроме того, запись using namespace std после ввода библиотек не устранит необходимость писать std :: перед каждой строкой кода? :)
  • 0
    У вас могут быть проблемы с using namespace std (конфликт using namespace std ). std::vector<int> - это динамический массив типа int . push_back добавляет новое значение в конце. v.size() возвращает номер элемента массива. v[i] возвращает i й элемент массива.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню