Как я могу избавиться от пустых строк, которые созданы C ++? - PullRequest
0 голосов
/ 29 февраля 2020

Редактировать: Спасибо всем за быстрые и полезные ответы. Я получил это работает сейчас. Это потому, что мне пришлось сбросить счетчик.


Я пришел просить о помощи, поскольку мой профессор не оказывает мне нужную помощь. Я новичок в C ++, и я пытаюсь запрограммировать программу, которая отображает все целые числа от 1 до 100, которые делятся на 6 или 7, но не оба. и я должен отобразить 5 номеров в строке. У меня все получилось, за исключением того, что в определенных областях формируются пустые строки. Я не знаю, из-за того, как я настроил счетчик или как.

Вот что я получил.


#include <iostream>

using namespace std;

int main()
{
    int counter = 0; // Counter for creating new lines after 5 numbers
    for (int numRange = 1; numRange <= 100; ++numRange) // Starts the loop of number 1 to 100
    {
        if (numRange % 6 == 0 || numRange % 7 == 0) // Makes the numbers divisible by 6 and 7
        {
            cout << numRange << " "; // Displays the output of the divisible numbers
            counter++; // Starts the counter

        }
        if (counter % 5 == 0) // using the counter to create new lines after 5 numbers displayed
        {
            cout << endl; // Creates a new line
        }
    }

    return 0;
}

Вот что выводится:






6 7 12 14 18


21 24 28 30 35
36 42 48 49 54

56 60 63 66 70

72 77 78 84 90
91 96 98

и это то, что должно выглядеть

  6   7 12 14 18 
21 24 28 30 35 
36 48 49 54 56 
60 63 66 70 72 
77 78 90 91 96 
98

1 Ответ

2 голосов
/ 29 февраля 2020

Проблема, с которой вы сталкиваетесь, связана с тем, что вы проверяете «5 выходов» на каждые l oop, а не только на тех, где число было выведено! Итак, чтобы исправить эту проблему (есть и другие), поместите тест counter % 5 == 0 в предыдущий блок if:

    for (int numRange = 1; numRange <= 100; ++numRange) // Starts the loop of number 1 to 100
    {
        if (numRange % 6 == 0 || numRange % 7 == 0) // Makes the numbers divisible by 6 and 7
        {
            cout << numRange << " "; // Displays the output of the divisible numbers
            counter++; // Increments the counter
            if (counter % 5 == 0) // Only need this if we have done some output!
            {
                cout << endl; // Creates a new line
            }
        }
    }

Другая проблема заключается в том, что в этом требовании:

, которые делятся на 6 или 7, но не на оба

ваш код не проверяет часть "но не оба" (но это не заголовок) 'вопрос, и я не собираюсь делать все вашу домашнюю работу за один раз oop).

...