|
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 4
|
||||||||||||||||
косяк вызова функции через switch case18.12.2011, 17:11. Показов 5004. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|