Hi,
stehe gerade vor einer seltsamen Aufgabe -
2 Zahlen sind als char-String einzulesen und danach zu addieren oder zu multipliezieren
aber wie verfährt man mit multiplikation? mache ich das "wie auf papier" werde ich bis zu 999 "999stellige" zahlen addieren müssen, das Ergebnis kann bis zu 1998-stellen haben
Richtig, die maximale Stellenzahl des Ergebnisses einer Multiplikation einer n- und einer m-stelligen Zahl ist (n+m)-stellig.
Die 999 zu addierenden Zahlen sind ja nur max. 10 verschiedene Zahlen (die entsprechend verschoben auf's Ergebnis zu addieren sind) - je eine Ziffer multipliziert mit der einen Zahl.
Eine davon ist uninteressant, nämlich die 0. Für die Ziffer 1 hast Du die Zahl eh schon gespeichert. Bleiben also noch 8 zusätzlich zu speichernde Zwischenergebnisse.
Jetzt in einer Schleife über die zweite Zahl laufen, bei jeder Ziffer die Verschiebung um 1 erhöhen und falls die Ziffer nicht 0 ist, das der Ziffer entsprechende Zwischenergebnis auf das bisherige Ergebnis passend verschoben draufaddieren.
Um Speicherplatz für die Zwischenergebnisse (1 * erste Zahl, 2 * erste Zahl, ... 9 * erste Zahl) zu sparen, kann man das Kommutativgesetz ausnutzen und ggf. die Zahlen vertauschen, so daß die Zwischenergebnisse für die kürzere der beiden Zahlen berechnet werden - dafür muß dann die Schleife über die längere Zahl laufen ...
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.