C : Массив циклов

#c

Вопрос:

Застрял на этом в течение последнего часа. Я попытался разобраться в проблеме с этим фрагментом кода:

 for (i = 0; i < 5; i  ) {
    for (j = 0; j < 7; j  ) {
        if(chosenSeat = seatz[5][7]) {
            
            cout << "Sorry, that seat is already taken. Please choose another." << endl;
        }
    }
}
 

В этом коде «cout» продолжал зацикливаться несколько раз, когда я хотел показать его только один раз. Каким-то образом, когда я попытался изменить порядок кода, чтобы попытаться исправить его, мне удалось испортить его еще больше. Теперь весь блок кода показывает свой вывод! 🙁

Какую ошибку я здесь совершил? Я застрял с этой проблемой в течение последних двух часов.

 cout << endl;
    cout << "Please enter your seat number to reserve: ";
    cin >> chosenSeat;

        for (i = 0; i < 5; i  ) {
            for (j = 0; j < 7; j  ) {
                if(chosenSeat = seatz[5][7]) {
                    
                    cout << "Sorry, that seat is already taken. Please choose another." << endl;
                }
            }
        }
    
        for (i = 0; i < 5; i  ) {
            for (j = 0; j < 7; j  ) {
                if (chosenSeat == seatNum [i][j]) {
                    seatz [i][j] = seatNum [i][j];
                    seatNum [i][j] = 0;
                cout << "Your seat has successfully been reserved." << endl;
                }
            }
        }
        
        if(chosenSeat == 0 || chosenSeat > 35)
        cout << "Invalid seat number.";
        while (cin.fail()){
            cin.clear();
            cin.ignore(numeric_limits <streamsize> :: max(), 'n');
            cout << "Invalid seat number.";
        }
 

Комментарии:

1. Вы имели в виду seatz[i][j] вместо seatz[5][7] этого ? В противном случае циклы не нужны

2. = != == ; первое-это присвоение, второе-сравнение.

3. Кроме того, вы имели в виду if (chosenSeat == seatz[...]) ( == для сравнения, = для задания)

4. chosenSeat == seatz[i][j] вместо chosenSeat = seatz[5][7] этого ? (повысьте уровень предупреждения, чтобы = вместо этого поймать проблему == ).

5. int seatNum [5][7] = {{1, 2, 3, 4, 5, 6, 7}, {8, 9, 10, 11, 12, 13, 14}, {15, 16, 17, 18, 19, 20, 21}, {22, 23, 24, 25, 26, 27, 28}, {29, 30, 31, 32, 33, 34, 35},}; int chosenSeat, i, j, y; int seatz[5][7]; @kuro до кодов, показанных выше, я объявил следующие значения.

Ответ №1:

Решение(ы):

Я понимаю, что вы пытаетесь сделать, и, учитывая, что код мало воспроизводим ( учитывая, что опубликованное нарушено), я дам вам несколько советов / альтернативных методов.

  1. При проверке матрицы вы используете неверный операнд = «против == «.
  2. При проверке правильности мест попробуйте создать класс, посвященный хранению переменных для мест.

Пример:

 class CSeats
{
    public:  
    int m_iSeatIndex; // An example of where you can store / save seat data.
};
 

Существует множество способов, которыми вы могли бы исправить код, но то, что предоставляется, слишком минимально и дает мало информации о сути проблемы.