Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 128
от 02.05.2005, 08:30

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 2


Вопрос № 20273: Добрый день. Мне нужно написать процедуру ввода с клавиатуры вещественного числа и ограничить ввод числами (ввод знаков кроме цифр и точки не должны приниматься) Сказать честно у меня мало что получается.... проблема в преобразовании текста ...

Вопрос № 20273
Добрый день.
Мне нужно написать процедуру ввода с клавиатуры вещественного числа и ограничить ввод числами (ввод знаков кроме цифр и точки не должны приниматься)
Сказать честно у меня мало что получается.... проблема в преобразовании текста в чилсо и ограничение ввода. Может кто - нибудь сможет мне помоч чем- либо . Буду рад любой помощи и совету. Зарание благодарен.
Отправлен: 26.04.2005, 18:24
Вопрос задал: kandim (статус: Посетитель)
Всего ответов отправлено: 2

Отвечает: Ayl
Здравствуйте, kandim!
Неплохо бы указывать, для какой ОС задача должна решаться. Пишу алгоритмы, они от ОС не зависят, а вот реализация...
Вариант 1.
-------------
Получаешь строку.
Проверяешь на допустимость - это просто. Перебираешь все введенные символы и проверяешь, что среди них только цифры и не более одной точки.
Если проверка не прошла - выдаешь сообщение об ошибке и снова запрашиваешь строку.
Вариант 2
------------
Считываешь вводимые символы по одному и проверяешь на допустимость. В случае цифры запоминаешь ее в строке. В случае точки проверяешь, что ее еще не было. Если это так, то сохраняешь точку и устанавливаешь флаг получения точки. Если же точка уже была - игнорируешь. Если получено что-то другое - тоже игнорируешь. Если получен код клавиши Enter - завершаешь ввод и переходишь к преобразованию.
Преобразование... Ну тут вариантов много. Например, можно использовать такой. Переводишь по отдельности целую и дробную части, а потом складываешь. Это под ДОС. Для винды, если не ошибаюсь, есть стандартные функции перевода строки в число.
Все операции лучше проводить через FPU. Целую часть считать понятно как: в итерациях по всем цифрам числа выполняешь n = n*10 + c(i), причем в начале итераций n = 0. Дробную часть получаешь как d = (d + c(i)) / 10, причем перебирать цифры нужно справа налево.
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 27.04.2005, 11:11
Оценка за ответ: 5

Отвечает: Евгений Иванов
Здравствуйте, kandim!
посмотри исходники библиотек HLA.
http://superforest.narod.ru/add/hlalibsrc.rar
там всё есть!
удачи!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 14 суток с момента отправки ответа.

Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 28.04.2005, 05:50


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться

В избранное