Проверка положения элемента в массиве и печать новой строки после проверки - PullRequest
0 голосов
/ 17 апреля 2020

Итак, я написал этот код, и он работает, пока я не попытаюсь реализовать часть моего второго для l oop, где я пытаюсь напечатать новую строку. Предполагается напечатать новую строку после печати восьмого элемента. Любая помощь приветствуется.

// Construct a for loop that runs backwards through the array,
// starting at the last element and ending at the first.

 for (int i = arraySize; i > 0; i--) {

    // Inside this for loop, print the ith element of the array
    // and a tab, with NO newline characters.
    cout << newArray[i-1] << "  ";

    // If this element is the 8th one on its line, print a
    // newline character to advance to the next line.
    // Also inside this for loop, add the value of the ith
    // element to the current value of the double for the sum
    // of elements.

    //ISSUE IS HERE
    if (newArray[i-8] = newArray[7]) {
        cout << "\n";
    }

    sumOfElements += newArray[i-1];

}

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

1 Ответ

2 голосов
/ 17 апреля 2020

Требуется сравнение (==), а не присвоение (=). Но в любом случае это

if (newArray[i-8] = newArray[7]) {
    cout << "\n";
}

неправильно. Для i < 8 вы получите доступ к отрицательным индексам, которые не имеют границ. Чтобы проверить, печатаете ли вы 8-й элемент из массива, вам нужно только взглянуть на индекс:

if (i == 7) {
    cout << "\n";
}

Если вы хотите поставить новую строку после того, как 8 элементов были напечатаны, тогда это

if (i == arraySize-7) {
    cout << "\n";
}

Если вместо этого вы хотите поставить новую строку после каждых 8 напечатанных элементов, тогда это будет

if ( (i - arraySize - 1)%8 == 0) {
    std::cout << "\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...