|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 4
|
||||||||||||||||
косяк вызова функции через switch case18.12.2011, 17:11. Показов 5027. Ответов 6
Метки нет (Все метки)
! кода по моим меркам много, если решитесь помочь, запаситесь терпением)))
Итак. Имеется зародыш курсовой - игры пятнашки. делал в консоли с графикой с помощью вин32апи. Прога разделена на 3 файла - заголовочный для класса, отдельно описание его методов, отдельно void main. Вкратце о происходящем: создается массив 4на4 объектов класса(фишек) в качестве полей имеющих координаты на поле и номер, а затем все хозяйство отрисовывается (никаких методов для выбора, движения фишек пока нет и в помине). номер фишки 0 означает свободное место на поле. Собственно, проблема: нивкакую не отрисовывается номер последней фишки Веселости: при изменении размера массива на 3х3 все робит, при использовании рандомно расставленных номеров баг становится плавающим - то есть то нет, зараза=((( Кстати способ отрисовки номеров фишек крайне дебилен, ибо как с помощью TextOut'а вывести число содержащееся в типе инт так и не понял( сам код в 3 куска puzzle.h
puzzle.cpp
убил себя об стену. заработало если считать что "14" - 2 символа, а "15" - три
0
|
||||||||||||||||
| 18.12.2011, 17:11 | |
|
Ответы с готовыми решениями:
6
Объясните где я косяк (switch case + char) Косяк при выборе операции через switch в калькуляторе
|
|
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
|
||||||||||||||||
| 18.12.2011, 17:20 | ||||||||||||||||
|
Ошибка достаточно примитивная(я это даже ошибкой не считаю, просто не досмотрел).
Вообщем так:
параметр cbString устанавливает длину строки. Для функции ANSI, это количество BYTE (байтов). Твоя функция:
Но символ "11" это уже 3 байта. Просто нужно для чисел с 10 до 15 поменять параметр cbString на 3 и все будет работать.
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 4
|
|
| 18.12.2011, 17:38 [ТС] | |
|
если так сделать то все действительно с гарантией заработает))) однако числа от 10 до 14 без проблем выводятся и с параметром 2 (а он кстати не всегда обозначает байты: http://vsokovikov.narod.ru/New... extout.htm) более того, если раскоментить рандомизацию значений, то порой и 15 будет нормально выводится
![]() но любом случае меня пробесил блок case'ов и я пытаюсь вывести инт через TextOut
0
|
|
|
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
|
||||||
| 18.12.2011, 18:02 | ||||||
|
Попробуй заменить свой switch на:
1
|
||||||
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 4
|
|||||||
| 18.12.2011, 18:28 [ТС] | |||||||
|
сделал так:
0
|
|||||||
|
5 / 5 / 1
Регистрация: 19.05.2009
Сообщений: 23
|
|
| 18.12.2011, 18:41 | |
|
По поводу сколько же байт ставить.
Точно я не знаю, но в описании функции написано что передаваемая строка в функцию должна быть без символа конца строки, вот почему там ставится количество байт после строки(чтобы знать сколько символов выводить, а не всю строку целиком). Так же не понятно какой именно набор использует программа, нашел вот такое: В MSDN описано, что LPCTSTR это 32 битный указатель на строку для совместимости с UNICODE и DBCS. То есть если этот параметр принимает DBCS(набор двухбайтных символов), то должно быть так как я и писал: строка "1" - 2 байта, строка "11" - должна вообще-то даже быть 4 байта. Но с 4 байтами выводит кашу. Вообщем непонятно. Добавлено через 2 минуты На счет функции itoa, мог бы уже не полениться и посмотреть что она принимает, но так как я начал уже писать то скажу, это система счисления в которой нужно записать число в массив символов, 10 - то есть десятичная.
1
|
|
|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 4
|
|
| 18.12.2011, 18:59 [ТС] | |
вчера полтора часа искал функцию, которая перевела бы int в char премного благодарен:dance3:
0
|
|
| 18.12.2011, 18:59 | |
|
Помогаю со студенческими работами здесь
7
Меню через switch и case Case switch и функции Переделать меню через switch / case Меню в консоли (через switch-case) Оптимальная конструкция switch-case-while / while-switch-case Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|