![]() |
2 числовых параметра, первый вводит пользователь, второй задается в скрипте
Не смог понять суть задания (заранее спасибо)
Написать файл, в котором задается 2 числовых параметра, первый параметр вводится пользователем с клавиатуры, второй задается в скрипте, и проверяется их существование. Если первая переменная существует, она выводится на экран, иначе выводится сообщение об ошибке. Если вторая переменная существует, она прибавляется к первой и выводится на экран, иначе выводится сообщение об ошибке. |
Неудивительно, что Вы не поняли. Поскольку под «параметром» обычно подразумевают совсем другое.
Попробуйте так: Скрытый текст
Код:
@echo off ![]() |
хороший вариант, единственное столкнулся с проблемой, по задаче должно быть именно число, а в этом варианте проходят и буквы, пробовал вот такой вариант для проверки символов, но проходит только для вводимого числа не могу связать со вторым числом, сумму считает, но при не верных данных, не останавливается на ошибке вводимого числа, а на втором числе высчитывает 0
Скрытый текст
@echo off
:st set /p "v=Введите число: " for /f "delims=" %%A in ('echo.%v%^| findstr "[^0-9]"') do set "nv=%%~A" if not "%v%"=="%nv%" (echo.Это число %v%) else (goto st) pause>nul |
самое приличное, что смог составить, проблема в том, что работает только в идеальных условиях, когда все значения числа, при вводе буквы, всё равно показывает значение суммы
Скрытый текст
@echo off
set /a "n=2" set /p "v=vvedide chisl: " set /a "summ=%v%+%n%" for /f "delims=" %%A in ('echo.%v%^| findstr "[^0-9]"') do set "nv=%%~A" for /f "delims=" %%A in ('echo.%n%^| findstr "[^0-9]"') do set "nt=%%~A" if not "%v%"=="%nv%" (echo.chislo1 %v%) else (echo.bag | pause>exit) if "%n%"=="%nt%" (echo. summa %summ%) else (echo.bag) pause exit |
Цитата:
Код:
@echo off |
Хоть это и глупо — проверять значение, заданное непосредственно в самом пакетном файле (я лично не вижу в этом ни малейшего смысла — в отличие от проверки интерактивно вводимых данных), но — пожалуйста:
Скрытый текст
Код:
@echo off Можете попробовать задать для переменной окружения iFirstVar вместо «12345» нечисловое значение, можете попробовать ввести для переменной окружения iSecondVar нечисловое значение и посмотреть, что будет. |
Вложений: 1
при вводи первого значения, числовым, второе значение из программы (буква), присваивает значение вводимой переменной 0, и считает сумму, хотя должна быть ошибка, также при буквенном значении вводимой переменной, по условию, второе значение отображаться не должно, но ошибку выдает верно
|
Что есть «первое значение», что есть «второе значение из программы (буква)»? Вы не могли бы выражаться в общепринятых терминах — «переменная окружения», «пакетный файл», «iFirstVar», «iSecondVar»?!
Вот примеры исполнения пакетного файла с кодом из предыдущего сообщения, со вводом числового значения для переменной окружения iSecondVar и со вводом не числового значения для переменной окружения iSecondVar: Скрытый текст
![]() Вот пример исполнения пакетного файла с кодом из предыдущего сообщения, в котором добавлена одна буква «a» — таким образом делается тупая попытка присвоения переменной окружения iFirstVar не числового значения непосредственно в коде пакетного файла (что, естественно, сразу вызывает ошибку, которую мы отслеживаем и выводим соответствующее сообщение): Скрытый текст
![]() |
crouly0, Мой вариант, частично списанный у Iska. Контроль корректности вводимых данных имеется.
Код:
@Echo Off |
Вложений: 2
я говорю о проверки iFirstVar
|
Вложений: 1
megaloman, та же проблема, с которой столкнулся я, не проверяется значение из программы iSecondVar, если в программе задать значение например (m), то программа выдает что значение iSecondVar, а по условию должна быть ошибка, и не должна выдавать сумму
|
Вложений: 1
megaloman, iSecondVar не проходит проверку, если внутри программы, дать значение например (m), то в результате получается значение 0, по условию должна быть ошибка, без подсчета суммы, вообщем у меня такая же проблема
|
1. проверка вводимого числа
если это не число, то ошибка, программа остановилась 2. Если введено число, выводим его на экран 3. проверяем число заданное в программе если это не число, ошибка, программа останавливается 4. если число заданное в программе число, выводим его на экран выводим сумму. а получается, если в программе не число, то выполняется в любом случае 4 пункт, но со значение 0 |
Выдалось время и было интересно запустить краш-тест :)
Цитата:
Цитата:
В свою очередь, чтобы не быть пустым критиканом, даю свою версию на краш-тест: Код:
@echo off |
crouly0,
Цитата:
Понимаю, можно ошибиться при вводе с клавиатуры, но руками в тексте скрипта - это злонамеренное вредительство. Но, хозяин - барин.
Вот вариант с одинаковым контролем обоих чисел Код:
@Echo Off |
Цитата:
Но свести к минимуму всевозможные коллизии синтаксиса, всё же, можно... |
YuS_2,
Цитата:
|
Цитата:
Цитата:
=== В вышеприведенный код добавлена возможность обработки шестнадцатиричных чисел |
Время: 22:18. |
Время: 22:18.
© OSzone.net 2001-