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

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Multiplikation » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Multiplikation
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Björn
unregistriert
Multiplikation Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 :-)
19.04.2015 13:12
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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


__________________
Syntax Highlighting fürs Board (Link)
19.04.2015 13:28 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Björn
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah, sorry, ich programmiere in Java :-)
19.04.2015 13:37
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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


__________________
Syntax Highlighting fürs Board (Link)
19.04.2015 14:15 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Björn
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank für die Antwort und den Code :-)
19.04.2015 21:29
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Multiplikation