Division

Eninaj

Mitglied
Hallo, ich habe diese Aufgabe:

a) Angenommen, in einer Programmiersprache stehen als Operatoren nur '+' und '-' zur Verfügung. Geben Sie einen Algorithmus als Struktogramm an, um eine ganze Zahl a durch eine andere ganze Zahl b zu dividieren. Auszugeben ist das Ergebnis und der Divisionsrest.
b) Setzen Sie Ihr Struktogramm in ein lauffähiges Java-Programm um.

ich bin hoffnungslos überfordert, wie soll ich dividieren, wenn ich nur + und - benutzen darf.

Vllt. kann mir ja jmd. helfen 🙂
 
Fangen wir einmal anders an: Multiplikation

Kannst du eine Multiplikation als Addition ausdrücken?

Also 4 * 5 .... oder in Sprache: vier mal (die) fünf.....
 
Und umgekehrt (Division) ist solange abzuziehen, bis die Zahl auf der linken Seite kleiner ist als die abzuziehende Zahl. Bspl: 5:2 wäre 5-2 = 3 (mit 5 > 2), 3-2=1 (mit 3 > 2), 1-2 = -1 (aber Abbruchbedingung)
 
Ja genau.

Und MoxxiManagarm gibt das schon direkt vor - das Mathematische hätte man auch schön Schritt für Schritt erarbeiten können ....

Ich hätte es über die anschauliche Multiplikation / Addition aufgebaut ...
 
X durch Y geteilt ist ja nichts anderes als X = a * Y + z

X = 0*Y + X
X = 1*Y + (X-Y)
...
Das wird so lange gemacht, bis eben der Rest < Y ist.

Oder als Algorithmus:
Java:
zaehler := 0
Rest = Dividend
So lange Rest > Divisor
       zaehler := zaehler +1
       Rest := Rest - Divisor
 
ja, soweit habe ich es inzwischen auch geschafft.
wie setze ich das jetzt um?
ich studiere erst seit 3 Monaten und ich habe absolut kein Plan außer dass das jetzt alles in eine Zählschleife zu bringen mit 2 Variablen:

if (a <b)
do {
a - b = i;
i++;

irgendwie so habe ich in den Vorlesungsunterlagen gefunden
 
Das obere ist nur der mathematische Hintergrund.
Der Algorithmus ist ja beschrieben und da hast Du nur einen Vergleich, eine Subtraktion und eine Addition.
 

Zurück
Oben