Оператор if внутри цикла for

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

Итак, я немного изучаю C++ и столкнулся с проблемой. Прямо сейчас мой код выглядит так:

#include <iostream>

using namespace std;

int main()
{
    int start, finish;

    cout << "Enter range start" << endl;
    cin >> start;
    cout << "Enter the range end" << endl;
    cin >> finish;

    if (start < finish)
    {
        for (int i = start; i <= finish; i++)
        {
            cout << "Number " << i << " is divisible by ";
            for (int j = 2; j <= 10; j++)
            {
                if (i % j == 0)
                {
                    cout << j << " ";
                }
            }
            cout << endl;
        }
    }
    return 0;
}

И вывод, который я получаю:

Number i is divisible by j1, j2 and etc.
Number i is divisible by
Number i is divisible by j1, j2 and etc.

Вы поняли идею. Я пытаюсь получить это

Number i is divisible by j1, j2 and etc.
Number i isn't divisible by any numbers
Number i is divisible by j1, j2 and etc.

Я пытался сделать это:

#include <iostream>

using namespace std;

int main()
{
    int start, finish;

    cout << "Enter range start" << endl;
    cin >> start;
    cout << "Enter the range end" << endl;
    cin >> finish;

    if (start < finish)
    {
        for (int i = start; i <= finish; i++)
        {
            cout << "Number " << i;
            for (int j = 2; j <= 10; j++)
            {
                if (i % j == 0)
                {
                    cout << " is divisible by " << j << " ";
                }
                else
                {
                    cout << " isn't divisible by any numbers";
                }
            }
            cout << endl;
        }
    }
    return 0;
}

Но на выходе просто каша. Извините, если это что-то прямолинейное и что-то, что я мог бы найти в сети, но я просто не знал, как правильно сформулировать свою проблему и что искать. Я буду признателен за любую помощь.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам следует

  1. создайте флаг, который указывает, есть ли какие-либо j, которые делят i.
  2. после цикла проверьте флаг и распечатайте сообщение, если это применимо.
#include <iostream>

using namespace std;

int main()
{
    int start, finish;

    cout << "Enter range start" << endl;
    cin >> start;
    cout << "Enter the range end" << endl;
    cin >> finish;

    if (start < finish)
    {
        for (int i = start; i <= finish; i++)
        {
            cout << "Number " << i;
            bool divisorFound = false;
            for (int j = 2; j <= 10; j++)
            {
                if (i % j == 0)
                {
                    if (!divisorFound)
                    {
                        cout << " is divisible by ";
                    }
                    cout << j << " ";
                    divisorFound = true;
                }
            }
            if (!divisorFound)
            {
                cout << " isn't divisible by any numbers";
            }
            cout << endl;
        }
    }
    return 0;
}

Другие вопросы по теме