125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
||||||
1 | ||||||
Проверить правильность расстановки кораблей. Морской бой27.09.2016, 14:56. Показов 3513. Ответов 18
Метки нет Все метки)
(
Есть матрица NxM, где расставлены корабли. Корабли не стоят на краю матрицы, кол-во 4-х клеточных кораблей - 1, 3-х клет. - 2, 2-х клеточных - 3, 1-х - 4
Нужно проверить правильно ли расстановлены и ответить YES,NO; Матрица заполняется 0 и 1, где 1 это клетка корабля. Корабли не должны соприкасаться друг с другом и должны быть все корабли(не меньше, не больше),задача взята из книги Динман Максима C++ Освой на примерах. Там есть первый пример, который очень схож с этой задачей, код не выполняется: Кликните здесь для просмотра всего текста
Строка, где //++, крашит программу, помогите с примером и задачей...
0
|
|
27.09.2016, 14:56 | |
Ответы с готовыми решениями:
18
Расстановка кораблей (морской бой) Консольный морской бой. Расстановка кораблей Морской бой.Обработка массива. Расстановка кораблей Морской бой - программа зацикливается на расстановке кораблей |
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
27.09.2016, 15:24 | 2 |
Почему строк только 8 задано? Так и задумано?
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
|
27.09.2016, 15:27 [ТС] | 3 |
nmcf, можно вообще любое кол-во, но не вместится на 4х4 и т.д., а 2 столбца и 2 строки дополнительных - это для того, чтобы не выйти за пределы матрицы.
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
27.09.2016, 15:51 | 4 |
У тебя 10 строк указано в размере (N + 2), а задаёшь только 8. Это нормально?
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
|
27.09.2016, 15:57 [ТС] | 5 |
nmcf, так при проверке смежных клеток через Test чтобы не выйти за пределы матрицы же) Нормально
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
27.09.2016, 15:59 | 6 |
Но столбцов-то ты 10 инициализируешь нулями/единицами, а строк 8. Не понятно.
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
||||||
27.09.2016, 16:06 [ТС] | 7 | |||||
nmcf, аа, щас исправлю, спасибо. Теперь код такой:
Кликните здесь для просмотра всего текста
Проблема не решена, все равно крашится
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
27.09.2016, 16:46 | 8 |
Отладчиком смотрел? Индексы правильные?
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
||||||
27.09.2016, 16:58 [ТС] | 9 | |||||
nmcf, не смотрел, индексы вроде правильные, именно та строка(42) рушит программу
А как посмотреть? VS есть, после ошибки прерываю, дальше что?) Добавлено через 1 минуту nmcf, желтая стрелка вот на эту строку показывает:
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
27.09.2016, 18:57 | 10 |
Текст ошибки какой?
В пошаговом режиме смотри за индексами.
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
|
29.09.2016, 16:59 [ТС] | 11 |
nmcf, ошибка не при компилировании, а при запуске программы. Такое ощущение, будто делаю что-то невозможное(делю на ноль/выхожу за пределы массива/бесконечный цикл)
Но такого не замечаю, да и условие примитивное...
0
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
29.09.2016, 18:21 | 12 |
Ну вот отладчиком и смотри в пошаговом режиме.
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
|
29.09.2016, 20:49 [ТС] | 13 |
nmcf, Ну не умею я((
0
|
![]() 3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
30.09.2016, 13:11 | 14 | |||||
![]() Решение
Кошмар! Программа спроектирована просто ужасно, в стиле программ на древнем Бейсике. Иногда поражаешься, какие дебилы пишут книги с поучениями.
Во-первых, непонятно при чем тут С++. Какие-то сплошь глобальные переменные с дурацкими буковками вместо имен. Слепые, ничего не объясняющие имена функций. Ну и автор книги таки алфавита не знает! У него N предшествует M! Завидую мужеству автора темы, который может в этом ковыряться. Кроме острого желания поблевать эта программа ничего не вызывает, и единственное, что с ней можно сделать, - это показывать детям, чтобы, не дай Бог, никогда такого не писали. Мой вариант:
2
|
7362 / 6284 / 2856
Регистрация: 14.04.2014
Сообщений: 27,223
|
|
30.09.2016, 14:17 | 15 |
Что там уметь? Точку останова перед этим циклом сделай, запусти, и программа там остановится. Дальше пошагово - в меню посмотри какие клавиши нажимать.
1
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
|
01.10.2016, 11:12 [ТС] | 16 |
Mr.X, спасибо, программа работает, но много непонятных моментов, можете прокомментировать код?
0
|
![]() 3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||
01.10.2016, 16:19 | 17 | |||||
Да он вроде бы самодокументируемый. А что непонятно?
Кстати, там можно обойтись без комплексных чисел:
0
|
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
|
||||||
01.10.2016, 16:46 [ТС] | 18 | |||||
Mr.X, я вообще не работал с контейнерами, векторами и комплексными числами. Хотя бы на словах объясните алгоритм? Да и из-за typedef путаюсь где что, новичку сложно разобраться в таком коде... Да и стиль у вас какой-то странный, везде пробелы) Вот в такую форму привел я:
Кликните здесь для просмотра всего текста
Перегрузка оператора < , для чего она?
0
|
![]() 3220 / 1747 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
01.10.2016, 18:29 | 19 |
![]() Ну, вы же задачи решаете чтобы язык освоить? Тут как раз удобный случай, чтобы с ними ознакомиться, тем более, что в них ничего сложного нет. Как только освоите незнакомые слова, так все сразу ясно станет. Ну, комплексные числа не имеют встроенного оператора <. В моем втором варианте они не используются.
1
|
01.10.2016, 18:29 | |
Помогаю со студенческими работами здесь
19
Морской бой. Ф-ция автоматической рассатновки кораблей.
Создать класс, реализующий хранилище кораблей для игрока в «Морской бой» Случайное распределение кораблей по полю в игре "морской бой" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |