Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Передо мной стоит задача написать несколько функции для кода игры в "пятнашки" на C. В общем почти все написал правильно. Осталась функция, которая каждый шаг проверяет правильном ли порядке стоят значения в массиве. Вот сам код: bool won(void) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. Печаль в том, что при запуске программы с входящим правильным решением, как-будто функция, которая проверяет условие победы, игнорируется. Если нужно могу привести весь код программы. Модератор: Тема перенесена из форума "Программирование". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 20:46 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
под отладчиком в функцию заходит? ифы вылетают за массив. там наверное нужно сделать else if, так? в последнем блоке можно сделать так return k==d*d-1 && board[d-1][d-1]==0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 21:55 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Alero, зачем вообще что-то считать? Достаточно проверить, что плитки расставлены по порядку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2017, 23:42 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, можно проще, если хранить в векторе, а в последний его элемент запихать std::numeric_limits::max, то получится в духе Код: plaintext 1. 2. 3. 4. 5. 6. 7. к тому же получится инвариант, который можно проверить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:25 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
ой, тут же написано на С )) сори. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2017, 19:26 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
alexy_black, спасибо за внимание, добавил исправления, но мне кажется, что они лишние, т.к. даже когда счетчик вылетает за границы массива, то он и не учитывает их, т.е. я думал пусть себе вылетает, т.к. на подсчете не должно сказываться. Тем не менее подправил. Прохожу на степике курс по с++ и там в правильности решения, например, важно было использовать конструкцию if {} else if {}, а просто подряд if {} if {} не принималось. В общем теперь вот так выглядит: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. P.S. Надеюсь я правильно понял то, что надо исправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 16:10 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Пётр Седов, мне бы хотелось написать нечто более универсальное и менее громоздкое:) конечно если моя задумка увенчается фиаско, то попробую проверить положение каждой плитки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2017, 16:13 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Aleroдаже когда счетчик вылетает за границы массива, то он и не учитывает их, т.е. я думал пусть себе вылетает, т.к. на подсчете не должно сказываться.Получение элемента массива по неправильному индексу -- это грубая ошибка. Вы скорее всего получите мусор, и то, что это не влияет на результат, -- чисто везение. Другие настройки компиляции, другой компилятор -- и везение быстро кончится. AleroТем не менее подправил.Вот и правильно. AleroПрохожу на степике курс по с++Так C или C++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 02:36 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
AleroПётр Седов, мне бы хотелось написать нечто более универсальное и менее громоздкое:) конечно если моя задумка увенчается фиаско, то попробую проверить положение каждой плитки. См Сюда 2 мерный масссив можно адресовать как одномерный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2017, 13:05 |
|
||
|
Пятнашки на С
|
|||
|---|---|---|---|
|
#18+
Alero, Привет! В этой строке ошибка: if (k==d*d-1 && board[d-1][d-1]==0) Нужно так: if (k==d*d-2 && board[d-1][d-1]==0) Сам прохожу подобный курс на edX. И задание такое-же почти. Интересно было бы увидеть весь код программы. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 22:25 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39564736&tid=2018030]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
87ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 274ms |
| total: | 446ms |

| 0 / 0 |
