Цикл считывающий лабиринт из файла добавляет лишнюю пустую строку в начале и не считывает последней
Программа правильно считывает количество столбцов и строк, хорошо работает с лабиринтами 8х8 (квадратными) или 9х8 (колонн больше чем строк), но с 8х9 не видит последней строки. Запоминается все в таблицу Lab. Сам код:
ifstream we("lab.txt");
int n, m, i, j;
pole p1, p2, p3;
we >> n >> m;
int Lab[n][m];
string s;
for (i = 1; i <= m; i++) {
we >> s;
for (j = 0; j<n; j++) {
switch (s[j]){
case '-':
Lab[j][i]=0; break;
case 'x':
Lab[j][i]=-1; break;
case 'w':
Lab[j][i]=0; p3.w=i; p3.k=j; break;
case 'o':
Lab[j][i]=1; p1.w = i; p1.k = j; break;
default:
Lab[j][i]=0;
}
В текстовом файле первая строка занята параметрами n и m, поэтому цикл начинается не с 0.
Ответы (1 шт):
Автор решения: Zayvik
→ Ссылка
В этом куске кода проблема была только в том, что неправильно запоминались p3.w
и p1.w
, их значения нужно было уменьшить на один для правильного размещения точки старта и выхода в таблице Lab
.