nullstellen in Batch berechnen?

...komplette Frage anzeigen

1 Antwort

Zuerst möchte ich anmerken, dass Batch nicht fürs Rechnen gemacht ist, vor allem mit negativen Zahlen.

Habe dir den Code mal eben etwas übersichtlicher geschrieben:

@Echo off
Set /a "i=-1000"
::Eingabe
set /P "m=Anstieg: "
set /P "n=Schnittpunkt mit der y-Achse: "

:zaehlstart
set/a nl=%m%*%i%-[%n%]
if %nl% EQU 0 goto :zaehlende
if %i% EQU 1000 goto :error
Set /a i+=1
goto :zaehlstart

:zaehlende
echo fertig
echo Ihre nullstelle ist %i%
pause >nul

:error
echo Keine Nullstelle gefunden.
pause >nul



Bei mir funktioniert der Code übrigens auch bei positiven Werten nicht, vermutlich da er keine Kommazahlen kennt. 

Es handelt sich ja wahrscheinlich um eine lineare Funktion, was du mit n machst versteh ich aber nicht so recht...

Habe mal versucht das ganze allgemein zu lösen:

y=m*x+n    |y=0 weil Nullstelle
0=m*x+n |-n
-n=m*x |:m
-n/m=x

--> x=-n/m

und damit eine neue batch:

@echo off
mode con cols=70 lines=20
echo.
echo (Steigung in ganzen Zahlen oder Bruechen der Form a/b angeben:)
set /p "m=Steigung m: "
set /a m=m
echo.
echo (Verschiebung der Funktion bzw der Schnittpunkt mit der y-Achse:)
set /p "n=Verschiebung n: "
echo.
echo.
set /a x=(0-n)/m
echo Die Nullstelle liegt ungefaehr bei %x%.
pause >nul

sollte funktionieren.

Zeigt aber das Problem dass ich am Anfang angesprochen habe:
bei Batch gibts keine double oder ähnliche Variablen.
Wenn Werte wie 0,8 rauskommen wird einfach alles hinterm Komma abgeschnitten. Die Antwort ist dann einfach 0.

Kann dir das ganze Programm gerne in Java schreiben, macht da mehr Sinn und sieht schöner aus.

LG Tim

äähm hier die Antwort auf deine Frage:

Dein Programm funktioniert auch bei negativen Werten zum Beispiel wenn m=1 und n=-1

nur eben nicht bei Kommazahlen, wie vorhin erklärt.

0

Was möchtest Du wissen?