Чтение 2D массива из консоли

0

Я пытаюсь прочитать 2-мерный массив с консоли, но мой код ошибочен и дважды читает мою последнюю строку, что я делаю неправильно?

Пример ВХОД:

1

01

10

ВЫВОД:

10

10

    int n;
    cin>>n;
    char *A=new char[n,n];

    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            cin>>A[i,j];
        }
        cin.ignore();
    }
  • 0
    Что это за A [i, j] ???
Теги:
multidimensional-array
console
input

2 ответа

0

Вы наткнулись на ловушку оператора запятой (не редкость). Он действителен C++, но он не делает то, что вы хотите видеть: как работает Comma Operator. Вы можете сделать это следующим образом:

cin>>n; 

std::vector<std::vector<std::string>> A; 

for(int i=0; i<n; i++) 
{ 
    A.push_back(std::vector<std::string>(n)); 

    for(int j=0; j<n; j++) { 
        if(!(cin >> A[i][j])) { 
            break; 
        } 
    } 

    if(!cin) 
        break; 
} 
0

Глядя на ваш код, я понимаю, вы пытаетесь сделать 2D-массив динамическим, но ваш синтаксис неверен для объявления, а также для заполнения массива. Подумайте о 2d массиве как массиве указателей на массив. Ранее этот вопрос задавали и отвечали:

Как объявить 2d-массив в C++ с помощью нового?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню