division mit rest

Status
Nicht offen für weitere Antworten.

jazzcookie

Mitglied
hi,
ich habe folgendes problem.ich soll ein programm schreiben, dass eine division mit rest genau so durchfuehrt wie man es in der schule auf dem papier gelernt hat.also ca. so:

142 / 11 = 12 Rest 10
11
--
32
22
--
10

als parameter habe ich nur den dividend und den divisor(beide int).die erste zeile ausgeben zu lassen ist noch kein problem:

int p=dividend/divisor;
int s=dividend-p*divisor;
System.out.println(dividend+"/"+divisor+"="+p+"Rest"+s);

fuehrt zu

142 / 11 = 12 Rest 10


fuer dividend 142 und divisor 11.
interessant fuer mich waere:wie mache ich dem computer klar das er von der 142 erst mal nur die 14 betrachten soll?
schreibt mir wenn ihr eine idee habt die mir weiterhelfen koennte

thx thx
 

faetzminator

Gesperrter Benutzer
Probier es mit [c]dividend/Math.pow(10, (int) Math.log10(divisor))[/c], Wenn das nicht klappt mit [c]Math.log10(divisor) - 1[/c] versuchen etc.
 

Marco13

Top Contributor
Hm. Ob das so stimmt? Ich glaube nicht...!? ???:L

Von der Idee her stimmt's aber: Du brauchst eine Methode, die ungefähr sowas macht wie
Code:
int gibMirEineZahlDieAusDenErstenStellenBestehtVon(int dieserZahl, int undDieGrößergleichDieserZahlIst)
{
    ...
}
Also bei 34562 / 1234 will man ja testen:
3 / 1234 -> Macht hier keinen Sinn
34 / 1234 -> Macht hier keinen Sinn
345 / 1234 -> Macht hier keinen Sinn
3456 / 1234 -> Jo, das passt, also rechnet man 3456/1234 und hat die erste Stelle des Ergebnisses...
 

faetzminator

Gesperrter Benutzer
Hier ein Beispiel, welches iterativ jeweils eine Stelle ausgibt:
Java:
void dividiere(int dividend, int divisor) {
    int i;
    while ((i = (int) Math.pow(10, (int) Math.log10(dividend / divisor))) != 0) {
        int p = dividend / i / divisor;
        dividend -= p * divisor * i;
        System.out.print(p);
    }
    System.out.println(" r: " + dividend % divisor);
}
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Vielleicht habe ich da ja was falsch verstanden, aber ... das mit dem log10 ist halt praktisch, wenn man mit einzelnen Stellen rumhantieren will... aber ob in einem Programm zum ""schrifltlichen" Dividieren mit Rest" ein "dividend/divisor" oder der Operator % vorkommen sollte (den man hier aber auch leicht weglassen könnte) weiß ich gerade nicht...
 

faetzminator

Gesperrter Benutzer
Wie würdest du das sonst machen? Die einzige Möglichkeit, die mir gerade einfällt, wär, dass man String.valueOf() verwendet und die benötigten Stellen wieder in einen int schreibt...
 

diggaa1984

Top Contributor
es wär schon ne kleine fummelei aber man kann das auch in einer schleife lösen (mit dieser stellen-frickelei) .. solange (rest >= divisor) .. wobei der rest eben den wirklichen rest vom dividenden beschreibt .. und nich den rest der teilrechnung
 

Michael...

Top Contributor
Sollte doch nicht so schwer sein, wenn man die schriftliche Division beherrscht.
Bsp. 142 :11
Per Schleife - entsprechend der Stellenanzahl des Dividenden - iterieren (3x) = (int)Math.log10(dividend)
darin den relevanten Teil ermitteln --> 1
durch den Divisor teilen 1 / 11 --> 0
Ergebnis entsprechend der Wertigkeit der Stelle mit Divisor multiplizieren 0 x 11 x 100 --> 0
dieses vom Dividenden abziehen 142 - 0 --> 142

2. Schleifendurchlauf
relevanter Teil --> 14
14 / 11 --> 1
1 x 11 x 10 --> 110
142 - 110 -->32

3. Schleifendurchlauf
relevanter Teil --> 32
32 / 11 --> 2
2 x 11 x 1 --> 22
32 - 22 -->10

die Zwischenerbnisse müssen natürlich in Variablen gespeichert werden.
 

Marco13

Top Contributor
Wie würdest du das sonst machen? Die einzige Möglichkeit, die mir gerade einfällt, wär, dass man String.valueOf() verwendet und die benötigten Stellen wieder in einen int schreibt...

Ja, das Stellengewurschtel ist eben ein bißchen frickelig. Da log10 zu verwenden ist an sich legitim, und alles, was man als Alternative macht, kann ja nur "mathematisch equivalent" zu dem sein. Aber wenn man schriftlich dividiert, rechnet man keine logarithmen aus, sondern man nimmt einzelne Stellen einer Zahl und schiebt sie hin und her.

Ich hab's jetzt mal implementiert mit Methoden
getDigitL(zahl, n) : Liefert die n-te Stelle von links
appendDigitR(zahl, d) : Hängt die Ziffer d rechts and eine Zahl
die intern NUR *,/ und % 10 verwenden (also genau das verschieben einer Zahl nach links oder rechts und das Abtrennen einer Ziffer), dann reduziert sich das auf das, was man wirklich bei schriftlicher Division rechnet
Java:
        while (index < length)
        {
            remainder = appendDigitR(remainder, getDigitL(dividend, index++));
            int digit = remainder / divisor;
            result = appendDigitR(result, digit);
            remainder -= digit * divisor;
        }

Nochmal: Ich gehe eben davon aus, dass das Ziel der Aufgabe nicht ist, sowas zu schreiben wie
Java:
    int result = (dividend / divisor);
    int remainder = (dividend % divisor);

    // Jetzt gibt die Zwischenschritte aus, die man
    // bei schriftlicher Division machen würde:
    while (...) { ... }
(jaja, das hattest du nicht, aber ich vermute eben, dass es nicht zuletzt um diese "magischen" Ziffer-Hantier-Methoden ging... )
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
Eninaj Division Java Basics - Anfänger-Themen 12
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
Y Datentypen Double Division ungenau Java Basics - Anfänger-Themen 45
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
Arif Java Division Java Basics - Anfänger-Themen 4
T Division durch 0 abfangen mit Schleife Java Basics - Anfänger-Themen 4
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
Q Operatoren inkrement der Division ? Java Basics - Anfänger-Themen 16
A Ausgabe einer Division Java Basics - Anfänger-Themen 11
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
S double division Java Basics - Anfänger-Themen 4
Corben if Abfrage mit Division durch Null Java Basics - Anfänger-Themen 4
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
H Division Java Basics - Anfänger-Themen 4
A Problem bei der Division mit Java Java Basics - Anfänger-Themen 4
U if-Anweisung trotz Division/0 Java Basics - Anfänger-Themen 6
S Division von long! Java Basics - Anfänger-Themen 4
U Double-Variable führt Division nicht korrekt aus Java Basics - Anfänger-Themen 4
RaoulDuke Division von ints Java Basics - Anfänger-Themen 2
R mathe trainer, division und andere fragen Java Basics - Anfänger-Themen 11
B Division ergibt null Java Basics - Anfänger-Themen 7
G Modulo Division funzt nicht Java Basics - Anfänger-Themen 3
S Division durch null abfangen :freak: Java Basics - Anfänger-Themen 14
C Wie erhalte ich nur ganze Zahlen als Ergebnis einer Division Java Basics - Anfänger-Themen 4
P Division Java Basics - Anfänger-Themen 6
M Rest mit Spring boot oder selbst anlegen Java Basics - Anfänger-Themen 14
M Rest- Api mit HTTP BASIC Authentication Java Basics - Anfänger-Themen 16
I REST Api / JAX-RS, Swagger (OpenAPI) - generelle Starthilfen benötigt Java Basics - Anfänger-Themen 15
S Teilen ohne Rest Java Basics - Anfänger-Themen 15
tom.j85 Externe Rest API konsumieren Java Basics - Anfänger-Themen 9
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
R Warum werden hier nur die grün und orangen Linien ausgegeben und der Rest unten nicht? Java Basics - Anfänger-Themen 5
D NodeJS Rest Api Erkläre Java Basics - Anfänger-Themen 3
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
J XML-Strukturen für REST-Service erstellen Java Basics - Anfänger-Themen 1
H Schleife für Teilen mit Rest Java Basics - Anfänger-Themen 1
I Höchste Zahl berechnen die eine Eingabe ohne Rest teilt und eine Primzahl ist Java Basics - Anfänger-Themen 2
D Rest ausrechnen Java Basics - Anfänger-Themen 2
F Teilen mit Rest Java Basics - Anfänger-Themen 12
O JRadioButton's - Einen aktivieren/ Rest deaktivieren Java Basics - Anfänger-Themen 5
M Rest herausfinden Java Basics - Anfänger-Themen 2
J Rest einer Zahl herausfinden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben