为什么增量变量会在它们具有不同名称时更改数组的值

why increment variable changing the value of the array when they have different names

本文关键字:数组 变量 为什么      更新时间:2023-10-16

有人能帮我吗?我很难在代码中找到为什么B列的最后一个值总是增加一。由于今天要交作业,我已经写了一些代码。我也不明白为什么B列中的最后一个值不等于196,因为在重置函数中,它将数组中的所有值都设置为196。任何建议都将不胜感激。提前感谢

#include <iostream> //includes cin cout
#include <iomanip>
using namespace std; //setting up the    environment
const int NUMBER_OF_ROWS = 3;
const int NUMBER_OF_COLUMNS = 3;
void printAllSeats(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
void reset(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
void askForUsersSeat(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS], int &SeatCountNumber, bool &anyFreeSeats);
bool isFull(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
bool isEmpty(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
int main() { //main starts
    int maxSeats;
    int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
    int SeatCountNumber = 0;
    bool anyFreeSeats;
    reset(seats);
    anyFreeSeats = true;
    SeatCountNumber = 0;
    while (anyFreeSeats) {
        printAllSeats(seats);
        askForUsersSeat(seats, SeatCountNumber, anyFreeSeats);
    }
    system("pause");
    return 0;
} //main ends
void printAllSeats(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]) {
    cout << endl;
    cout << setw(10) << "              - = Available      R =   Reservednn";
    for (int i = 0; i <= NUMBER_OF_ROWS; i++) {
        cout << setw(15) << i << " ";
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            if (i == 0) {
                cout << "  " << static_cast<char>(j + 65) << "   ";
            } else {
                cout << "  " << static_cast<char>(seats[i][j]) << "   ";
            }
        }
        cout << endl;
    }
    cout << endl;
}
void reset(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]) {
    //set all values in array to  196
    for (int i = 0; i <= NUMBER_OF_ROWS; i++) {
        for (int j = 0; j <= NUMBER_OF_COLUMNS; j++) {
            seats[i][j] = 196;
        }
    }
}
void askForUsersSeat(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS], int &SeatCountNumber, bool &anyFreeSeats) {
    int seatChoiceNumber;
    char seatChoiceLetter;
    int letter;
    int maxSeats = NUMBER_OF_ROWS * NUMBER_OF_COLUMNS;
    cout << "Seat (Row, Column):    ";
    cin >> seatChoiceNumber >> seatChoiceLetter;
    letter = static_cast<int>(toupper(seatChoiceLetter));
    if (((letter >= 65) && (letter < (65 + NUMBER_OF_COLUMNS))) && ((seatChoiceNumber > 0) && (seatChoiceNumber <= NUMBER_OF_ROWS))) {
        if (seats[(seatChoiceNumber)][(letter - 65)] == 82) {
        } else {
            seats[(seatChoiceNumber)][(letter - 65)] = 82;
            SeatCountNumber++; //this changes last value in column  B for some reason
            if (SeatCountNumber < maxSeats) {
                anyFreeSeats = true;
            }
            else if (SeatCountNumber > maxSeats) {
                printAllSeats(seats);
                anyFreeSeats = false;
            }
        }
    } else {
    }
}

我稍微清理了一下代码。你似乎在评论中找到了答案,所以我只是做了一些缩进。试着消除代码中的空白(请注意,我在这里放的这个也不完美,但你明白了)。干净易读的代码不仅会让它对你更好,而且随着你在行业中的地位越来越高,其他人开始阅读和处理你的代码,拥有干净易读的编码真的很有帮助:)

#include <iostream> //includes cin cout
#include <iomanip>
using namespace std; //setting up the    environment
const int NUMBER_OF_ROWS = 3;
const int NUMBER_OF_COLUMNS = 3;
void printAllSeats(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
void reset(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
void askForUsersSeat(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS], int &SeatCountNumber, bool &anyFreeSeats);
bool isFull(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
bool isEmpty(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]);
int main() 
{ 
    int maxSeats;
    int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];
    int SeatCountNumber = 0;
    bool anyFreeSeats;
    reset(seats);
    anyFreeSeats = true;
    SeatCountNumber = 0;
    while (anyFreeSeats)
    {
        printAllSeats(seats);
        askForUsersSeat(seats, SeatCountNumber, anyFreeSeats);
    }
    system("pause");
        return 0;
} //main ends
void printAllSeats(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS])
{
    cout << endl;
    cout << setw(10) << "              - = Available      R =   Reservednn";
    for (int i = 0; i <= NUMBER_OF_ROWS; i++)
    {
        cout << setw(15) << i << " ";
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++)
        {
            if (i == 0) 
            {
                cout << "  " << static_cast<char>(j + 65) << "   ";
            }
            else 
            {
                cout << "  " << static_cast<char>(seats[i][j]) << "   ";
            }
        }
        cout << endl;
    }
    cout << endl;
}
void reset(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS])
{
    //set all values in array to  196
    for (int i = 0; i <= NUMBER_OF_ROWS; i++)
    {
        for (int j = 0; j <= NUMBER_OF_COLUMNS; j++)
        {
            seats[i][j] = 196;
        }
    }
}
void askForUsersSeat(int seats[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS], int &SeatCountNumber, bool &anyFreeSeats)
{
    int seatChoiceNumber;
    char seatChoiceLetter;
    int letter;
    int maxSeats = NUMBER_OF_ROWS * NUMBER_OF_COLUMNS;
    cout << "Seat (Row, Column):    ";
    cin >> seatChoiceNumber >> seatChoiceLetter;
    letter = static_cast<int>(toupper(seatChoiceLetter));
    if (((letter >= 65) && (letter < (65 + NUMBER_OF_COLUMNS))) && ((seatChoiceNumber > 0) && (seatChoiceNumber <= NUMBER_OF_ROWS)))
    {
        if (seats[(seatChoiceNumber)][(letter - 65)] == 82)
        {
        }
        else
        {
            seats[(seatChoiceNumber)][(letter - 65)] = 82;
            SeatCountNumber++; //this changes last value in column  B for some reason
            if (SeatCountNumber < maxSeats)
            {
                anyFreeSeats = true;
            }
            else if (SeatCountNumber > maxSeats)
            {
                printAllSeats(seats);
                anyFreeSeats = false;
            }
        }
    }
    else {
    }
}

注意:甚至可以出现更多的空格,但我通常喜欢在某些语句(个人偏好)后面有空格。