badbatchcoder
Goto Top

Teilen mit Rest

Hey,
könnte mir jemand ein Batch-Skript schreiben, womit ich eine beliebige Zahl "x1" mit Rest "rest1" durch eine andere beliebige Zahl "x2" teilen kann. Das Skript müsste dabei dem Ergebnis der Division der Variable "result1" zuordnen, die Anzahl der Stellen des Ergebnisses der Variable "digits1" und wie oben schon erwähnt den übrig gebliebenen Rest der Division der Variable "rest" zuordnen. Und ja, ich brauche unbedingt eine Division mit Rest, da ich die Zahlen als natürliche Zahlen weiter verarbeiten möchte. =)

Ich hoffe mir kann hier jemand helfen
LG BatchCoder

Content-ID: 612394

Url: https://administrator.de/contentid/612394

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

SeaStorm
Lösung SeaStorm 13.10.2020 aktualisiert um 19:47:57 Uhr
Goto Top
Da kann der Batchcoder kein Rechnen mit Batch face-sad

@echo off
set x1=17
set x2=5
set /A rest1=x1 %% x2
set /A digits1=x1 / x2
echo Rest: %rest1%
echo Digist: %digits1%

pause

und wenn du das mit nachkommastellen beim dividieren haben willst, dann ... dann nimm powershell, da ist das eh alles einfacher und besser

$x1=17
$x2=5

$rest1=$x1 % $x2
$digist1=$x1 / $x2


Write-Host "Rest: $rest1"  
Write-Host "Digist: $digist1"  
BadBatchCoder
BadBatchCoder 13.10.2020 um 20:02:50 Uhr
Goto Top
Ok danke =) Werde es gleich ausprobieren. Sorry, mir ist kein besserer Name eingefallen, ich weis dass ich noch relativ unerfahren bin... 😊
BadBatchCoder
BadBatchCoder 13.10.2020 aktualisiert um 20:19:27 Uhr
Goto Top
Habs grad getestet. Funktioniert alles relativ gut, nur hast du der Variable %digits1% das Ergebnis zugeordnet. Ich hab damit gemeint, dass der Variable %digits1% die Anzahl der Stellen des Ergebnisses und der Variable %result1% das eigentliche Ergebnis zugeordnet werden sollte.

Aber ansonsten funktionierts, danke =)
rubberman
Lösung rubberman 13.10.2020 um 22:06:12 Uhr
Goto Top
Zitat von @BadBatchCoder:
dass der Variable %digits1% die Anzahl der Stellen des Ergebnisses

@echo off &setlocal
set /a "x=4711"  
set /a "a=1+!!(x/10)+!!(x/100)+!!(x/1000)+!!(x/10000)+!!(x/100000)+!!(x/1000000)+!!(x/10000000)+!!(x/100000000)+!!(x/1000000000)"  
echo %a%
pause
Dass man die Anzahl Ziffern tatsächlich benötigt ist so ungewöhnlich, dass ich mich fast dazu hinreißen lasse zu fragen, warum ...?

Steffen
BadBatchCoder
BadBatchCoder 16.10.2020 aktualisiert um 06:52:37 Uhr
Goto Top
Kennst du das Hexadezimalsystem? Dabei wird eine dreistellige Zahl durch 16 geteilt und dann das Ergebnis und der Rest hintereinander geschrieben. Zahlen, die größer als 9 sind, werden aufwärst laufend einem Buchstaben im Alphabet zugeordnet. Wenn das System die Zahlen dann wieder in eine normale Zahlenfolge umrechnet, muss man wissen wie viele Stellen das Ergebnis hat, damit mögliche Nuller ergänzt werden können. Ich weis, die Anzahl der Stellen braucht man deshalb eigentlich nur beim "entziffern", aber das da kann man ja das Skript problemlos umformen. 😃

Ich arbeite auch an einem System, das lange Zahlenfolgen auf eine ähnliche Art und Weise ver- und entschlüsseln soll. Ich hoffe das hat deine Frage beantwortet.

Ach und bitte nicht wundern, wieso die Frage noch nicht auf gelöst ist. Ich hab das Skript bisher noch nicht getestet, wahrscheinlich mach ich das erst heute Nachmittag.

Vielen Dank für deine Hilfe =)
LG BatchCoder
rubberman
Lösung rubberman 16.10.2020 um 16:18:19 Uhr
Goto Top
Kennst du das Hexadezimalsystem?
Ich zähle entweder in HEX oder BIN. Gibt's auch noch was anderes? 😝

muss man wissen wie viele Stellen das Ergebnis hat, damit mögliche Nuller ergänzt werden können.
Batch kann nativ mit HEX umgehen. Keine Ahnung was du da für Umwege machen willst.
@echo off &setlocal
cmd /c exit 123456
set "hex=%=exitcode%"  
echo %hex%
set /a "dec=0x%hex%"  
echo %dec%
pause
Steffen