mackof [ Prypiat ]
Mnożenie dużych liczb (C++) - problem.
Chciałem zrealizować mnożenie w stringach, jednak niektóre wyniki są złe. (np dla 15 i 15). Byłbym wdzięczny, jeżeli ktoś znajdzie błąd.
Oto kod:
Na początku podaję liczbę testów, następnie po kolei liczby do przemnożenia.
redan [ Wiking ]
pytanie dlaczego robisz to taką metodą. nie łatwiej przekonwertować string na double i potem wykonać operację matematyczną, a następnie znowu przekonwertować wynik na string?
trzeba dołączyć bibliotekę "stdlib.h"
string na liczbę:
atof - Convert string to double
atoi - Convert string to integer
strtod - Convert string to double
w drugą stronę:
double b = 3.0000;
char s[20];
sprintf(s,"%f",b);
graf_0 [ Nożownik ]
pytanie dlaczego robisz to taką metodą.
Ja bym zgadywał że jest to np. wprowadzenie do mnożenia wielkich liczb, które w double się nie mieszczą.
To tylko moja uwaga. Co do meritum się nie wypowiadam - za dużo zapomniałem.
reik [ Pretorianin ]
Tu masz problem i kilka gotowych rozwiązań. Po co wynajdywać koło na nowo?
alpha_omega [ Legend ]
Chyba po to, ażeby się czegoś nauczyć. Kopiując gotowe rozwiązania niczego się człowiek nie nauczy.
Tak, czy owak - podejście autora wątku, to po prostu oddanie w kodzie dodawania i mnożenia pisemnego, ale prawdę mówiąc nie chce mi się tego rozkminiać. Po cholerę np. te reversy. Np. w dodawaniu z wystarczyłoby pętlę w drugą stronę puścić i żadnej takiej komplikacji by nie było.
mackof [ Prypiat ]
Przepraszam za opóźnienie, ale po paru godzinach oczekiwania uznałem, że nikt tu nie zajrzy.
redan->duże liczby, czyli większe niż unsigned long long (19 cyfer).
alpha_omega -> reversy są po to, aby móc wygodniej pracować na tablicach. Jeżeli pojadę od tyłu to jeżeli bym chciał dopisywać kolejne cyfry na początek stringa (liczba się wydłuży - to oczywiste), to potrzebny będzie insert, a pracowanie od tylu i na insertach jest bardzo niewygodne.
reik -> napisalem, że na stringach chcę pracować. A w rozwiązaniu przez Ciebie podanym używam struktur + to co napisał alpha_omega
alpha_omega [ Legend ]
mackof --
Masz rację. Nie pomyślałem o tym.