Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Multiplikation » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 5 Beiträge
Björn

Vielen Dank für die Antwort und den Code :-)
eulerscheZahl

Und schon wird es ein paar Zeilen länger.

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 String padLeft(String s, int n) {
	return String.format("%1$" + n + "s", s);
}

public static String multiply(int a, int b) {
	StringBuilder sb = new StringBuilder();
	int aLength = String.format("%d", a).length();
	int bLength = String.format("%d", b).length();
	sb.append(a + "*" + b + "\n");
	sb.append(padLeft("", aLength + bLength + 1).replace(' ', '-') + "\n");
	int endPos = aLength + 2;
	String bStr = String.format("%d", b);
	for (int i = 0; i < bLength; i++) {
		int tmp = a * (bStr.charAt(i) - '0');
		String tmpStr = String.format("%d", tmp);
		sb.append(padLeft(tmpStr, endPos) + "\n");
		endPos++;
	}
	sb.append(padLeft("", aLength + bLength + 1).replace(' ', '-') + "\n");
	sb.append(padLeft(String.format("%d", a * b), aLength + bLength + 1)
			+ "\n");
	return sb.toString();
}
Björn

Ah, sorry, ich programmiere in Java :-)
eulerscheZahl

Du hast leider nicht angegeben, in welcher Sprache du das realisieren willst.
Hier mal etwas C#:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
public static string Multiply(int a, int b) {
	StringBuilder sb = new StringBuilder ();
	int aLength = a.ToString ().Length;
	int bLength = b.ToString ().Length;
	sb.AppendLine (a + "*" + b);
	sb.AppendLine (new string ('-', aLength + bLength + 1));
	int endPos = aLength + 2;
	foreach (char c in b.ToString()) {
		int tmp = a * (c - '0');
		int tmpLength = tmp.ToString ().Length;
		sb.AppendLine (new string (' ', endPos - tmpLength) + tmp);
		endPos++;
	}
	sb.AppendLine (new string ('-', aLength + bLength + 1));
	sb.AppendLine ((a * b).ToString ().PadLeft (aLength + bLength + 1, ' '));
	return sb.ToString ();
}


Ein Aufruf mit Console.WriteLine( Multiply (18, 23)); liefert:
code:
1:
2:
3:
4:
5:
6:
18*23
-----
  36
   54
-----
  414
Björn Multiplikation

Meine Frage:
Hi zusammen,

angenommen ich soll zwei Zahlen multiplizieren (wäre ja kein Problem), nur soll die Ausgabe folgendermaßen aussehen:

18*23
------
36
54

-----
414


Also erst die 18*2 und dann die 18*3, anschließend beides addieren, sprich wie man es "früher" in der Schule gelernt hat.


Meine Ideen:
Denke ich jetzt vielleicht nur zu kompliziert, aber ich meiner Meinung nach, wäre das so ziemlich aufwändig?

Vielen Dank für Eure Antworten :-)