• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kłopot z wyświetlaniem dużych liczb - C++

Object Storage Arubacloud
0 głosów
2,844 wizyt
pytanie zadane 15 sierpnia 2016 w C i C++ przez Krzysiek Rojowski Obywatel (1,110 p.)
edycja 15 sierpnia 2016 przez Krzysiek Rojowski

Witam. Mam problem z pewnym zadaniem ze Spoja. Mianowicie mam podane że do programu możemy wpisać 2 liczby mające do 10000 CYFR i pomnożyć je (czyli np. 12345678912345 * 100000000000000000000). Ustawiłem typ danych jako long double i ustawiłem precyzje do 10000 znaków. Moje pytanie: dlaczego program wypisuje błędne wyniki i jak temu zaradzić? Z góry dziekuję :)

 

 

 

 

 

 

 

3 odpowiedzi

+1 głos
odpowiedź 15 sierpnia 2016 przez manjaro Nałogowiec (37,390 p.)
wybrane 15 sierpnia 2016 przez Krzysiek Rojowski
 
Najlepsza
Takie coś byłoby zbyt proste. Też będę się za to zabierał wkrótce. Wiem jak to policzyć ale to trochę skomplikowane. Trzeba to zrobić sposobem pisemnym w słupku.

http://pl.spoj.com/problems/TMUL/
komentarz 15 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
Faktycznie liczenie w słupku może mieć sens :D,a napisałbyś potem jak wyświetlić ta liczbę jak zrobisz? a tak w ogóle to dziękuję :)
komentarz 15 sierpnia 2016 przez manjaro Nałogowiec (37,390 p.)
Nie chce mi się tego robić i odkładam to na później. Technicznie nie jest takie trudne ale dużo przy tym roboty.
+1 głos
odpowiedź 15 sierpnia 2016 przez Patrycjerz Mędrzec (192,320 p.)
Spróbuj zapisać liczby w postaci ciągu znaków, np. 123456789 jako "123456789" - dzięki temu możesz operować na ogromnych liczbach. Jedynym mankamentem jest konieczność stworzenia własnych funkcji do operacji na takich danych.
komentarz 15 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
Dokładnie, ja sobie napisałem klasę BigInt. Największa liczba jaką obsługuje to (10^4294967295)-1 :)
komentarz 15 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
A wysłałbyś zdjęcie programu jak ta klasa dokładnie wygląda? Nie chodzi mi oto żeby ściągnąć, ale po prostu  bardzo mnie to tropi :D
1
komentarz 15 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
Byłoby to za łatwe, ale mogę Ci wytłumaczyć jak to działa. zapisujesz te liczby w postaci stringa, i jak masz 2 stringi, i np. musisz zrobić dodawanie, to robisz tak jak w podstawówce: dodawanie pisemne, podobnie z mnożeniem, implementujesz mnożenie pisemne, nie trzeba tu dużo tłumaczyć :)
+1 głos
odpowiedź 15 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Pierw to trochę poducz się C/C++. Bo te zadanie wymaga utworzenia własnego typu danych i operowania na nim
1
komentarz 15 sierpnia 2016 przez Krzysiek Rojowski Obywatel (1,110 p.)
Zanim napiszesz swój komentarz to przeczytaj pytanie, bo ja proszę o pomoc, a nie zdanie osoby która napisze mi że nic nie umiem i żebym się uczył. Myślisz. że to co tu napisałem to nie jest nauka C++?
1
komentarz 15 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Radzę czytać ze zrozumieniem. Napisałem byś poduczył się CPP, a nie, że nic nie umiesz. Po drugie by brać się za SPOJA trzeba mieć trochę wiedzy. Bo dajesz takie kwiatki jak tutaj, żeby long double pomieścił 10000 cyfr po przecinku. Prawda jest taka, że long double ma 64 bity miejsca na liczbę, gdzie liczba jest podwójnej precyzji.
1
komentarz 15 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
@krzysiek rojowski Ale zaraz zaraz, on Ci napisał, że to wymaga utworzenia własnego typu danych, o co masz do niego pretensje?

@zakosili mi neta, chyba, że unsigned long double, to wtedy nie jest to liczba podwojnej precyzji :P
komentarz 15 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Nie chodzi mi tu o minus. Podwójnej precyzji znaczy, że im większa liczba jest tym traci precyzję po prawej stronie, a im mniejsza po lewej to ją zyskuje na prawo. Chyba, że o czymś nie wiem :)
komentarz 15 sierpnia 2016 przez CzikaCarry Szeryf (75,340 p.)
aha, czyli mi się coś pojebało, whatever :D

Podobne pytania

0 głosów
1 odpowiedź 1,228 wizyt
pytanie zadane 9 kwietnia 2017 w C i C++ przez maciek259 Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 885 wizyt
pytanie zadane 9 maja 2018 w C i C++ przez koniak20 Początkujący (390 p.)
0 głosów
3 odpowiedzi 1,936 wizyt
pytanie zadane 28 marca 2017 w C i C++ przez Kenzy Obywatel (1,160 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...