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-Key: 612394

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: Penny.Cilin
Solution Penny.Cilin Oct 13, 2020 at 17:35:49 (UTC)
Goto Top
Member: SeaStorm
Solution SeaStorm Oct 13, 2020 updated at 17:47:57 (UTC)
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"  
Member: BadBatchCoder
BadBatchCoder Oct 13, 2020 at 18:02:50 (UTC)
Goto Top
Ok danke =) Werde es gleich ausprobieren. Sorry, mir ist kein besserer Name eingefallen, ich weis dass ich noch relativ unerfahren bin... 😊
Member: BadBatchCoder
BadBatchCoder Oct 13, 2020 updated at 18:19:27 (UTC)
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 =)
Member: rubberman
Solution rubberman Oct 13, 2020 at 20:06:12 (UTC)
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
Member: BadBatchCoder
BadBatchCoder Oct 16, 2020 updated at 04:52:37 (UTC)
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
Member: rubberman
Solution rubberman Oct 16, 2020 at 14:18:19 (UTC)
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