Aufgabe, Russische Bauernmultiplikation JAVA

Neue Frage »

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 smile

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);
		}
	}

}
 
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
}
Auf diesen Beitrag antworten »
Someone

Oh wow das ging schnell... vielen Dank!
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »