-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1-3-average.cmd
87 lines (73 loc) · 1.59 KB
/
1-3-average.cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
@echo off & setlocal enableDelayedExpansion
title Durchschnitt Berechnen
::CONFIG::
set /a decimalPlaces=6
:main
cls
::MESSAGE1::
echo.
echo Zahl eingeben und mit [enter] bestaetigen.
echo Haben sie alle Zahlen eingegeben, erneut
echo mit [enter] bestaetigen
echo.
::INPUT::
set /a i=0
:input_while
set "input=f"
set /a "ip1=i+1"
set /p "input=(%ip1%) > "
if /i "%input%"=="F" set /a i-=1 & goto calc
call :isNumber "%input%"
if %errorlevel% EQU 1 (
call :deleteLeadingZero "%input%"
set /a input=!errorlevel!
set /a numbers[%i%]=input
) else (
echo %input% ist keine gueltige Eingabe.
goto input_while
)
set /a i+=1
goto input_while
::CALCULATION::
:calc
if %i% LSS 0 goto main
set /a length=i+1
set /a sum=0
for /L %%i in (0,1,%i%) do (
set /a sum+=numbers[%%i]
)
call :divide "%sum%" "%length%" "%decimalPlaces%" "average"
if %errorlevel% EQU 0 ( set "equSign==" ) else ( set "equSign=~" )
echo.
echo. Durchschnitt %equSign% %average%
echo.
echo. [Erneut ausfuehren]
pause >nul &%0
::FUNCTIONS::
:divide
set /a int=%~1/%~2
set "result=%int%,"
set /a remainder=%~1-(int*%~2)
set /a decP=0
:div_LOOP
set /a intR=(remainder*10)/%~2
set /a remainder=(remainder*10)-(intR*%~2)
set result=%result%%intR%
set /a decP+=1
set "%~4=%result%"
if %remainder% EQU 0 exit /b 0
if %decP% GEQ %~3 exit /b 1
goto div_LOOP
exit
::OTHER::FUNCTIONS::
:isNumber
set "string=%~1"
call :trim string
set /a number=string
if %number% EQU 0 if not "%number%"=="%string%" exit /B -1
exit /B 1
:trim
set "%~1=!%~1: =!"
exit /B
:deleteLeadingZero
exit /B %~1