Невозможно напечатать реверс заполненного пользователем частичного массива - PullRequest
0 голосов
/ 06 октября 2019

Для присвоения мы должны были заполнить массив пользовательскими символами, которые прекращают заполнение, когда пользователь вводит полную остановку ".". Часть задания состоит в том, чтобы распечатать символы, введенные в массив в обратном порядке, но то, что у меня есть, кажется, просто ничего не печатать. Первый раз спрашиваю, поэтому извиняюсь, если это глупый вопрос. Заранее спасибо.

#include <iostream>
using namespace std;

//Function declarations
bool fillArray(char charArray[], int arraySize, int& numberUsed);
void outputInReverse(const char charArray[], int& numberUsed);

int main() {

    const int arraySize = 100;
    char charArray[arraySize] = { };
    int numberUsed = 0;

    //Function calls
    cout << "\nFILLING ARRAY....\n";
    fillArray(charArray, arraySize, numberUsed);


    cout << "\nARRAY OUTPUT....\n";
    outputInReverse(charArray, numberUsed);

}
//Function definitions
bool fillArray(char charArray[], int arraySize, int& numberUsed) {

    char inputChar;
    int index = 0;
    const char sentinel = '.';
    bool sentinelEntered = false;
    bool arrayFull = false;
    int count = 0;


    //Take user input
    for (int i = 0; i < arraySize; i++) {
        if ((!sentinelEntered)) {
            cout << "Enter up to " << arraySize << " character values. Enter full stop to end. " << "Enter char " << (i + 1) << ": " << endl;
            cin >> inputChar;
            charArray[index] = inputChar;
            //How many entries made
            numberUsed = i;
            count++;
            if ((inputChar == sentinel)) {
                sentinelEntered = true;
                cout << "Number of entries: " << (count - 1) << endl;
                return count;
            }
        }
    }
    if (numberUsed == arraySize) {
        arrayFull = true;
        return arrayFull;
    }
    return sentinelEntered;
    return count;
}
// Reverse 
void outputInReverse(const char charArray[], int& numberUsed) {
    for (int i = numberUsed; i > 0; i--) {
        cout << "Output in reverse: " << charArray[i] << endl;
    }
}

FILLING ARRAY .... Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 1: a Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 2: b Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 3: c Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 4: d Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 5: e Введите до 100 символьных значений. Введите полную остановку до конца. Введите символ 6:. Количество записей: 5

ARRAY OUTPUT .... Вывод обратный: Вывод обратный: Вывод обратный: Вывод обратный: Вывод обратный:

1 Ответ

0 голосов
/ 06 октября 2019

Не уверен, что вы пытаетесь вернуть из fillArray (), но так как это тип bool, предполагается, что вы пытаетесь вернуть, если массив пуст или нет. Наблюдайте за добавленными комментариями, чтобы увидеть исправления.

int main() {

const int arraySize = 100;
//corrected
char charArray[arraySize] = { NULL };
int numberUsed = 0;

//Function calls
cout << "\nFILLING ARRAY....\n";
fillArray(charArray, arraySize, numberUsed);


cout << "\nARRAY OUTPUT....\n";
outputInReverse(charArray, numberUsed);
return 0;
}

bool fillArray(char charArray[], int arraySize, int& numberUsed) {

char inputChar;
int index = 0;
const char sentinel = '.';
bool sentinelEntered = false;
bool arrayFull = false;
int count = 0;

//Take user input
for (int i = 0; i < arraySize; i++) {
    if ((!sentinelEntered)) {
        cout << "Enter up to " << arraySize << " character values. Enter full stop to 
        end. " << "Enter char " << (i + 1) << ": " << endl;
        cin >> inputChar;
        //corrected: shifted here so before '.' can enter into array we return
        if ((inputChar == sentinel)) {
            sentinelEntered = true;
            cout << "Number of entries: " << (count) << endl;
            //correction: update numberUsed  before returning and no of 
            //elements = count
            numberUsed = i;
            return count;
        }
        //correction: array index should not be "index" but i
        charArray[i] = inputChar;
        //How many entries made
        numberUsed = i;
        count++;
    }
}
if (numberUsed == arraySize)
    return true;
return false;
}

void outputInReverse(const char charArray[], int& numberUsed) {
for (int i = numberUsed-1; i >= 0; i--) {
    cout << "Output in reverse: " << charArray[i] << endl;
}
}
...