![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 5 Всего: 61 |
Вот такое задали задание... Нашел похожее задание и его решение: http://forum.vingrad.ru/topic-124735.html Как его переделать или лучше писать заново? |
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Зачем же писать заново? Можно передалать на восьмиричную ввод и вывод.
|
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 5 Всего: 61 |
|
|||
|
||||
| anwe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
По вводу (нажатию на ентер) проверять коды введеных символов (и не забывать про возможный первый минус
Добавлено @ 23:30 Не заметил твоё Вот он:
|
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 5 Всего: 61 |
Итак, вот что получилось:
Все бы хорошо, но вот только вылетает программа... И не пойму почему... :( Добавлено через 1 минуту и 15 секунд Сейчас прога берет рпосто числа в массив и выводит массив в шестнадцатиричной системе |
|||
|
||||
| anwe |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 748 Регистрация: 2.9.2006 Репутация: 9 Всего: 23 |
Возможных причин тут две. В порядке вероятности влияния на вылет. 1) Рекомендуется заканчивать программу через ExitProcess с кодом выхода. У тебя же все заканчивается на строке ret, где выводятся значения. Смотри, вызывается print_all для вывода цифр. А после строки jb l3, когда условие уже не истинно, все равно идет на print_all. То есть и заканчивается на ret и выводит не известно что. Но это мало вероятно. 2) WriteConsole требует указателя на выводимую строку, у тебя же ax содержит значение. Его максимальное значени (даже теоретически) 65535. Значит обращается к этой, запрещенной ячейке памяти. И еще. Винда работает так, что значение регистра edx после выполнения API-функций не сохраняется, что там возвращается - не известно. А ты его используешь для хранения выводимых цифр. Это на вылет, конечно, не влияет, просто выведешь не то, что надо. Мне проще было сделать самому, нежели корректировать твою. Это несмотря на то, что я и сам не работал с консолью, но, разобравшись, понял, что ты не правильно с ней работал. Меня, наверное как и тебя, смутило это:
Мол, читает по символам. Но это не так. Это character input from the console. Ведь второй параметр: address of buffer to receive data (что надо для строки), да и в отладчике увидел воочию - считывается вся строка. Так что пришлось переделывать программу под работу и корректировку именно строки, а не как делал ты - считывал посимвольно. И выводить по условиям твоего задания надо в той же системе счисления, а ты пытался выводить в 16-ричной. Кстати, у меня без запроса консоли у ОСи программа не пошла. Так что держи код.
Вот такое вот получилось. MessageBox ввел специально, чтобы виден был результат в консоле. Иначе она закрывается сразу и ничего не успеваешь увидеть. И вообще, я не понимаю почему надо работать именно с консолью! |
||||||
|
|||||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 5 Всего: 61 |
Огромное спасибо! Буду сидеть разбираться...
|
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |