2014-09-08 2 views
1

Я пытаюсь получить в среднем массиве в этом коде:Всего массива в пакетном

set /a arr[%b%]=%i% 

где% б% устанавливается от 0 и Ь = Ь + 1 и петли до тех пор, пока хитов номер. Числа в этом массиве могут отличаться.

Теперь мне нужно получить среднее значение этого arr [% b%], чтобы я мог отображать его в конце всего кода.

Спасибо

+0

вам нужно '(arr1 + arr2 + .. arrn)/n'? – npocmaka

ответ

0

Вам нужно изменить это на основе размера массива:

setlocal enabledelayedexpansion 

set limit=10 
set /a total=0 
for /l %%a in (0, 1, %limit%) do set /a total+=!arr[%%a]! 
set /a ave=%total%/%limit% 

Echo Total:  %total% 
Echo Average: %ave% 

И это должно работать для arr[0] в arr[10].

+0

но ограничение не фиксировано ... Вам нужно будет подсчитать элементы – npocmaka

+0

Большое вам спасибо, но в конце кода говорится «отсутствующий операнд». Все остальное работает, хотя – user1728736

0

Monacraft ответ не плохо, но я предпочитаю, чтобы вычислить массив length.Here является пересмотренный ответ (плюс добавлен модуль) ...

@echo off 
setlocal enabledelayedexpansion 
::::::::just a test array:::::::::::: 
set /a arr[1]=1 
set /a arr[2]=1 
set /a arr[3]=1 
set /a arr[4]=7 
set /a arr[5]=2 
set /a arr[6]=1 
::::::::::::::::::::::::::::::::::::: 


set /a total=0 
for /f "delims=" %%# in ('set arr[^|find /c "="') do set "limit=%%#" 
for /l %%a in (0, 1, %limit%) do set /a total+=!arr[%%a]! 
set /a ave=total/limit 
set /a mod=total%%limit 

Echo Total:  %total% 
Echo Average: %ave%.%mod% 
Echo Average(no mod): %ave% 
endlocal 
Смежные вопросы