#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
string temp;
ifstream in("infile.txt");
getline(in, temp);
int dim = temp.length();
char maze [dim-1][dim-1];
int i = 0;
do{
for(int l = 0; l<dim; ++l){
cout<< temp.at(l);
maze[i][l] = temp.at(l);
cout << maze[i][l];
}
i++;
cout << endl;
}while(getline(in, temp));
for(int k=0; k<dim; k++){
for(int m=0; m<dim; m++){
cout << maze[k][m];
}
cout<< endl;
}
cout<< *maze;
}
код читает блок текста, который считается квадратным, и помещает каждый символ в 2d-массив. он компилируется и работает нормально, но когда я проверяю значения массива с окончанием 2 для циклов, последние значения каждой строки (т.е. лабиринт [0] [5], лабиринт [1] [5]...) все неправильно. Похоже, что они перешли на первый символ следующей строки, но я не могу найти ничего в коде, который бы это сделал! Кроме того, еще более странно, значения, напечатанные НЕМЕДЛЕННО до и сразу после
maze[i][l] = temp.at(l);
правильны!
Что меняет значения в моем массиве?
Вы должны объявить массив с размером dim not dim-1, потому что строка содержит n символов из мест от 0 до n-1 и нулевой символ в n позиции string.length() возвращает n.
char maze [dim-1][dim-1];
???