ďťż

Ładny brzuch

Witam.
Mam pewien problem z dużymi liczbami, tzn. jak np. liczbę 10 podnieść do potęgi 300, wiem że się to da zrobić ale nie wiem jak, albo np. 999999999999999999999999999999999*999999999999999999999999999999999.

Z góry dzięki za pomoc.




Witam.
Mam pewien problem z dużymi liczbami, tzn. jak np. liczbę 10 podnieść do potęgi 300, wiem że się to da zrobić ale nie wiem jak, albo np. 999999999999999999999999999999999*999999999999999999999999999999999.

Z góry dzięki za pomoc.


Albo użyjesz bliblioteki (np. GMP) dającej takie mozliwosci, albo sam napiszesz obsługę wielkich liczb (np. uzywając tablich charów).

1. Było.
2. Lib.
3. Napiszesz to sam, nie jest to trudne, zwłaszcza oparte na stringach(klasa->funkcje podstawowe(dodawanie, odejmowanie itd.), funkcje konwertujące, compile, enjoy ;).
Użytkownik arcktos edytował ten post 08 październik 2006, 14:47

3. Napiszesz to sam, nie jest to trudne, zwłaszcza oparte na stringach(klasa->funkcje podstawowe(dodawanie, odejmowanie itd.), funkcje konwertujące, compile, enjoy wink2.gif.

Wątpie, żebym sam to napisał bo już długo to próbuje, naprowadźcie mnie na to jak to zrobić. Coś kiedyś słyszałem o stringach ale nie wiem co i jak, tzn. wiem co to są stringi ale nie wiem jak je tu zastosować.
Użytkownik hustler edytował ten post 08 październik 2006, 14:57


dodawaj , odejmuj itp jak w szkoel uczyli pisemnie :P. tablice char'ow (string) interpretuj jako tablice wszystkich cyfr wcghodzacych w sklad liczby, np 234 (pierwszy element '2', nastepny '3', kolejny '4').


dodawaj , odejmuj itp jak w szkoel uczyli pisemnie :P. tablice char'ow (string) interpretuj jako tablice wszystkich cyfr wcghodzacych w sklad liczby, np 234 (pierwszy element '2', nastepny '3', kolejny '4').
Takie liczenie jest strasznie wolne. Polecam jednak uzywanie dostepnych w internecie bibliotek.
// Jezeli znasz pascala to polecam do analizy FGInt - ladnie dziala :).
Użytkownik Ali240 edytował ten post 08 październik 2006, 22:56
Ok dzięki. Ale chodzi mi o nie korzystanie z dodatkowych bibliotek. Pascala znam ale wole c++.

Mozna oczywiscie zamiast tablicy charow uzyc tablicy intów na przykład system liczenia o podstawie 65536

Trzeba mieć tablicę liczb. Polecam stworzyć klasę z wektorem powiedzmy unsigned charów. I tak np. przy dodawaniu dodajesz te dwa chary, będące elementami o tym samym indeksie vectorów obu liczb i zapisujesz w wynik w unsigned int-cie (jest znacznie większy niż char). Do odpowiedniego miejsca w wektorze zapisujesz wynik lub wynik-256 (tyle mieści się w char), jeśli liczba będzie większa lub równa 256. W takim wypadku do następnej liczby dodajesz 1 (przy dodawaniu tyle zawsze przechodzi na następną liczbę niezależnie od systemu liczbowego). Jeśli w wektor okaże się za mały możesz go powiększyć. Poza tym przydałaby się zmienna typu bool do przechowywania znaku liczby +/-.
I w ten sposób masz klasę, w której możesz przechowywać dowolnie dużą liczbę (kłopot tylko z wpisaniem takiej do tej klasy, bo każda stała doślowna też jest jakiegoś typu). Tak więc do dzieła maestro! (bo widzę, że chcesz sobie potrenować programowanie, w przeciwnym wypadku naprawdę dobrym pomysłem jest skorzystanie z klas bibliotecznych).

Co do stringów: tak na prawdę stringi są wektorami typu char (dziedziczą go).

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •