24.01.2016, 17:11 |
Auf diesen Beitrag antworten » |
Someone |
Aufgabe, Russische Bauernmultiplikation JAVA
Hallo zusammen,
bin neu hier und hoffe auf etwas Hilfestellung bei meiner Aufgabe.
Zitat: |
Aufgabe 1 25 Punkte
Die Russische Bauernmultiplikation zweier ganzer Zahlen a und b funktioniert wie folgt.
Initialisiere
Setze p = 0.
Setze v auf wahr, falls das Vorzeichen des Produkts von a und b negativ ist, sonst
auf falsch.
Iteriere
Solange b ungleich 0 ist
Falls b ungerade ist, erh ohe p um a
Verdopple a.
Halbiere b ganzzahlig.
Finalisiere
Falls n otig, abh angig von v und p, ver andere das Vorzeichen von p.
Liefere p als Ergebnis.
Schreiben Sie eine Java-Applikation, die zwei ganze Zahlen als Kommandozeilenargumente
entgegen nimmt, mit Russischer Bauernmultiplikation multipliziert und das Ergebnis
ausgibt, ohne dabei die Multiplikation (*) von Java zu benutzen.
Gliedern Sie den Quelltext in die Abschnitte Initialisiere, Iteriere, Finalisiere und Kennzeichnen
Sie die Abschnitte durch Kommentare.
(25 Punkte) |
Ich habe soweit das hier hinbekommen, aber irgendwas fehlt....eclipse sagt, dass der booleanwert v nicht genutzt wird, was ich auch sehe. Doch in der Aufgabestellung steht auch nicht genaueres. Ehrlich gesagt, weiß ich auch nicht was der boolean-Typ hier macht.
Hoffe ihr könnt hier mir weiterhelfen
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
|
public class BM2 {
public static void main(String[] args) {
int a = 15; //feste Konstante ansonsten Integer.parseInt(args[0]);
int b = 10; //feste Konstante ansonsten Integer.parseInt(args[1]);
int p = 0;
boolean v = false;
if (a < 0 ^ b < 0)
v = true;
while(b != 0) {
if (b % 2 != 0) {
p += a;
a += a;
b /= 2;
}
}
if (v = true ^ p < 0) {
p = -p;
System.out.println(p);
}
}
} |
|
|
24.01.2016, 17:22 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Siehe Kommentare
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
public static void main(String[] args) {
int a = 15;
int b = 10;
int p = 0;
boolean v = false;
if (a < 0 ^ b < 0)
v = true;
while (b != 0) {
if (b % 2 != 0) {
p += a;
}
a += a; //aus if herausgezogen
b /= 2; //aus if herausgezogen, sonst gibt es eine Endlosschleife
}
if (v == true ^ p < 0) { //= zu ==, es soll ja keine Zuweisung werden
p = -p;
}
System.out.println(p); //aus if herausgezogen, wir wollen das Ergebnis immer sehen
} |
|
|
24.01.2016, 17:36 |
Auf diesen Beitrag antworten » |
Someone |
Oh wow das ging schnell... vielen Dank! |