|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Преобразование строки в простое число CMD/BAT |
|
CMD/BAT - [решено] Преобразование строки в простое число CMD/BAT
|
Пользователь Сообщения: 62 |
Профиль | Отправить PM | Цитировать Добрый день!
При вводе с клавиатуры значения переменной с помощью set /p полученное значение имеет тип Строка, правильно? Можно ли это значение сделать простым числом, чтобы в дальнейшем проводить над ним математические операции? |
|
Отправлено: 15:07, 26-04-2013 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать В bat нету разграничения по типам переменных. Всё зависит от того, как вы с ними работаете. Математические операции над значением переменной можно проводить с помощью Set /A (обратитесь к встроенной справке за подробностями), если одно или все значения - нечисловые - они игнорируются (считаются нулём). Принудительно указать тип числа для Set /A можно добавив перед ним 0x (для шестнадцатеричных) или 0 (для восьмеричных).
|
Отправлено: 15:53, 26-04-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Цитата Anonymоus:
::@echo off set /a c = 1 set /p h = "Vvedite chislo, faktorial kotorogo neobhodimo vichislit: " ::set /a b = -12 if %b% lss 0 goto minus for /L %%a in (1, 1, %b%) do set /a c = c * %%a if %c% gtr 2147483647 goto mnogo echo %c% :minus echo vvedeno otricatelnoe chislo goto vihod :mnogo echo previsheno ogranichenie goto vihod :vihod pause |
|
Отправлено: 16:02, 26-04-2013 | #3 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Работающий вариант. Я постарался прокомментировать код, но если что непонятно будет - спрашивайте.
@Echo Off SetLocal EnableDelayedExpansion :: Запрашиваем данные у юзера Set /P Value=Enter a number:^> :: Проверка введённых данных Echo %Value%|Findstr /R "[0-9]">Nul||(Echo Only numeric value accepted&Pause&Exit) If %Value% LSS 0 (Echo Error: negative value&Pause&Exit) If %Value% GEQ 2147483648 (Echo Error: out of acceptable range&Pause&Exit) :: Считаем факториал. В связи с ограничениями арифметики в cmd, факториал считается до 16 включительно Set Result=1 For /L %%A In (1,1,%Value%) Do ( Set /A Result=!Result!*%%A If !Result! GEQ 2147483648 (Echo Error: variable overflow&Pause&Exit) ) :: Отключаем расширенную обработку для вывода восклицательного знака SetLocal DisableDelayedExpansion Echo %Value%! = %Result% Pause |
Отправлено: 16:40, 26-04-2013 | #4 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Цитата Anonymоus:
|
||
Отправлено: 16:46, 26-04-2013 | #5 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Цитата kelevara:
Небольшое исправление, замените на Теперь любое не-число вызовет появление ошибки. |
|
Отправлено: 16:51, 26-04-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Anonymоus:
|
|
Отправлено: 16:52, 26-04-2013 | #7 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Iska, вы правы. Стоит поменять очерёдность проверок на
|
Отправлено: 16:55, 26-04-2013 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле | InVariable | Скриптовые языки администрирования Windows | 4 | 22-05-2015 20:06 | |
CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10? | ANR | Скриптовые языки администрирования Windows | 9 | 26-03-2013 10:02 | |
Delphi - [решено] Pascal, разделение строки на число и символ | paul_8 | Программирование и базы данных | 8 | 29-01-2013 13:41 | |
CMD/BAT - [решено] Пакетное преобразование данных с помощью cmd | Tosyk | Скриптовые языки администрирования Windows | 22 | 26-11-2010 14:13 | |
VB.NET | Превращение строки в число и конверсия типов | mrcnn | Программирование и базы данных | 3 | 16-03-2007 11:40 |
|