Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: id_cloun   (18.12.2011 в 23:26)
Всех приветствую! Делаю задание на C++ Builder 6: найти кратчайший путь в лабиринте от текущего положения до выхода. Лабиринт сделал через StringGrid, где '0' – пустая область, куда можно делать ход, '1' — препятствие. Расставил препятствия вручную, так как иначе можно получить тупиковую ситуацию. Ячейка 1А — начало лабиринта, 5Е — выход. Минимальный путь — 2B, 3C, 4D. Максимальный — 2B, 1B, 1C, 1D, 1E, 2E, 3E, 4E. После нахождения кратчайшего пути заголовку Label присваивается координаты ячеек, входящих в этот самый путь. Понятно, чтобы найти минимальный маршрут, нужно организовать цикл с использованием алгоритма (например, волнового). С этим у меня и возникли проблемы. Примерно как работают алгоритмы мне понятно, но вот с реализацией проблема. Возможно, программирование не для меня или сказывается маленький опыт. От не понимания, что делать дальше, посмотрел как суммировать значения всех ячеек. Надеюсь, кто-нибудь подскажет как быть дальше. С уважением, Сергей.



// создание лабиринта
Form1->StringGrid1->Cells[0][0]='0'//start
Form1->StringGrid1->Cells[4][4]='0'//finish
Form1->StringGrid1->Cells[1][0]='0'//long way
Form1->StringGrid1->Cells[1][1]='0'//short way
Form1->StringGrid1->Cells[1][2]='1';
Form1->StringGrid1->Cells[1][3]='1';
Form1->StringGrid1->Cells[1][4]='1';
Form1->StringGrid1->Cells[2][0]='0'//l
Form1->StringGrid1->Cells[2][1]='1';
Form1->StringGrid1->Cells[2][2]='0'//s
Form1->StringGrid1->Cells[2][3]='1';
Form1->StringGrid1->Cells[2][4]='1';
Form1->StringGrid1->Cells[3][0]='0'//l
Form1->StringGrid1->Cells[3][1]='1';
Form1->StringGrid1->Cells[3][2]='1';
Form1->StringGrid1->Cells[3][3]='0'//s
Form1->StringGrid1->Cells[3][4]='1';
Form1->StringGrid1->Cells[4][0]='0'//l
Form1->StringGrid1->Cells[4][1]='0'//l
Form1->StringGrid1->Cells[4][2]='0'//l
Form1->StringGrid1->Cells[0][1]='1';
Form1->StringGrid1->Cells[0][2]='1';
Form1->StringGrid1->Cells[0][3]='1';
Form1->StringGrid1->Cells[0][4]='1';
Form1->StringGrid1->Cells[4][3]='0'//l

// суммирование значений всех ячеек
int summa = 0;
  for(int i = 0; i < StringGrid1->ColCount; i++)
    for(int j = 0; j < StringGrid1->RowCount; j++)
      summa += StrToInt(StringGrid1->Cells[i][j]);
Label12->Caption=summa;


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: