SET /a calctotal=0
for /l %%i in (1, 1, 100) do (
set /a result = %%i %% 5
set /a calctotal += result + 3
)
set /a average = %calctotal%/100
echo %average%
Проблема для меня - это интерпретация иона "рассчитать сумму через арифметическое выражение %% переменная mod 5 + 3"
Это значит the sum of (%%variable mod 5 + 3)
или (the sum of (%%variable) mod 5 + 3
??
Во всяком случае, есть некоторые проблемы с вашим кодом (ну, если бы не было, вы бы не спросить, не так ли?)
Во-первых, в «блок» (серия в скобки линий) любой %var%
заменяется значением var
во время обнаружения блока и не изменяется при выполнении блока. Классический способ справиться с этим - вызвать delayedexpansion
.
Таким образом, в вашем коде, вы не выполнявших set /a calctotal = + 3
100 раз, а %result%
был бы заменен его значением в начале цикла (предположительно неопределенном, следовательно, ничего)
Следующая проблема в том, что вам пытаются установить calctotal
на последнее значение result
- вы не , аккумулируя значения.
однако в этом случае, вы можете использовать set /a
синтаксис, который работает на current
значения переменных - если вы не ссылаться на них в качестве %var%
.
set /a calctotal += result + 3
использует +=
для накопления значений. Вы также можете использовать set /a calctotal = calctotal + result + 3
, что может быть более очевидным.
Я установил calctotal
в ноль перед запуском на всякий случай, когда он установлен.
И без сомнения, вы могли бы устранить необходимость в result
с помощью set /a calctotal += %%i %% 5 + 3
Возможный дубликат [Windows Пакетная обработка файлов - Loops] (http://stackoverflow.com/questions/21183602/windows-batch-file- обрабатывающие петли) – SomethingDark
@SomethingDark: Я видел эту проблему раньше - несколько дней назад - с тем же плохо выраженным расчетом. К сожалению, ваш номинантный «дубликат» - это ИМХО, слишком сложный для новичков - например, ';' нет необходимости, и вам не требуется delayedexpansion (в этом случае.) – Magoo
@Magoo - '% calctotal%' инициализируется внутри кодового блока; как вам не нужно замедленное расширение? – SomethingDark