Я пытаюсь прочитать 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();
}
Вы наткнулись на ловушку оператора запятой (не редкость). Он действителен 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;
}
Глядя на ваш код, я понимаю, вы пытаетесь сделать 2D-массив динамическим, но ваш синтаксис неверен для объявления, а также для заполнения массива. Подумайте о 2d массиве как массиве указателей на массив. Ранее этот вопрос задавали и отвечали: