[QGHG-it-dev-list] Zadatak 41 - transformisanje iz double u string i obrnuto
Dimitrije Djokic
dimitrije.dj3 at gmail.com
Mon May 11 21:31:35 CEST 2026
Poštovani,
Ja ću da se uhvatim zadatka 41.
Srdačan pozdrav,
Đokić Dimitrije.
On Sun, May 10, 2026 at 9:14 PM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
> Implementirati dve staticke funkcije
>
> string serialize_double_to_string ( double number )
>
> double serialize_string_to_double ( string str )
>
> koje transformisu double broj u string i obrnuto.
>
> Broj tipa double treba da se transformise u string tako da se sva
> informacija o njemu koja postoji u memoriji enkodira u ASCII string na
> jednoznacan nacin. Drugim recima, treba u string zapisati znak, eksponent i
> mantisu znacajnih cifara koje masina pamti. Rezultujuci string treba da
> bude zapisan najbolje ASCII kodom, tako da moze bez problema da se stavi u
> XML fajl, za sve moguce input vrednosti double broja. Ukoliko je moguce,
> bilo bi pozeljno da string takodje bude i human-readable, tj. da direktnim
> gledanjem u string u XML fajlu mozemo relativno lako da saznamo vrednost
> broja koju taj string enkodira, ali ovo nije neophodno ako je preveliko
> cimanje za implementaciju.
>
> Druga funkcija treba da uradi inverznu operaciju --- da zadati string
> transformise u double vrednost. Kompozicija obe funkcije treba da bude
> identitet u oba smera, u smislu da rezultujuci double nakon uzastopne
> primene obe funkcije bude jednak pocetnom double-u, a takodje i da
> rezultujuci string nakon uzastopne primene obe funkcije bude jednak
> pocetnom stringu (pod pretpostavkom da je pocetni string ispravno
> formatiran).
>
> Takodje, razmisliti, predloziti i implementirati podrsku za "specijalne"
> brojeve tipa NaN, pozitivna i negativna nula, beskonacnost, i sve ostalo
> sto je definisano IEEE 754 standardom [1].
>
> Algoritam za obe funkcije bi bilo dobro da bude platform-independent ---
> ne znam da li razliciti kompajleri pod "double" mozda podrazumevaju
> razlicite opsege vrednosti, imaju razlicite velicine mantisa, itdisl, pa to
> treba prouciti i napisati kod tako da funkcija zna kako da se ponasa kada
> je biblioteka kompajlirana datim kompajlerom na datoj platformi (npr. da
> shvati da li se izvrsava na 32-bitnom ili 64-bitnom hardveru, isl).
> Takodje, obe funkcije treba transparentno da podrzavaju sledeci scenario:
>
> - Na jednoj platformi (recimo 64-bitnoj) se zada neki double broj, i
> funkcija ga pretvori u string, koji se zatim snimi u XML fajl.
> - Taj fajl se zatim prebaci na drugu platformu (recimo 32-bitnu),
> otvori i procita.
> - Funkcija za pretvaranje stringa u broj na drugoj platformi treba da
> ume da dekodira string iz fajla generisan na prvoj platformi:
> - ako string sadrzi premalo cifara, dopuniti ih nulama,
> - ako string sadrzi previse cifara, zaokruziti ga na podrzan broj
> cifara,
> - itdisl.
>
> Napomena: Na pocetku razmatranja ovog zadatka, najpre treba pretraziti i
> pregledati vec postojeca resenja za serializaciju double vrednosti u
> stringove i obratno. Ne zelimo da izmisljamo toplu vodu, pa ukoliko vec
> postoji neki upotrebljiv algoritam koji implementira sve ovo na
> zadovoljavajuci nacin, svakako ga treba iskoristiti (slobodno dodati taj
> kod u third_party_software direktorijum), radije nego da sami pisemo kod za
> sve ovo odozgo. U slucaju da postoji takvo gotovo resenje, gornje dve
> funkcije implementirati kao wrapper-e, da prosto pozovu odgovarajuce
> funkcije iz tog third-party koda i vrate odgovarajuci output.
>
> Implementacije obe funkcije staviti u input_and_output.cpp i .hpp fajlove.
>
> Unutar triangulator/test/ putanje dodati novi fajl
> double_string_serialize_test.cpp, koji ce razne vrednosti double brojeva da
> konvertuje u stringove, zatim stringove natrag u double vrednosti, da
> uporedjuje rezultate uzastopne primene obe funkcije, i da ispisuje sve te
> korake na stdout, da mozemo da vidimo da sve radi kako treba. Testirati
> kako regularne, tako i "specijalne" brojeve iz IEEE 754 standarda.
>
> Ukoliko imate bilo kakva pitanja ili sugestije vezane za ovaj zadatak,
> slobodno se javite.
>
> :-)
> Marko
>
> [1] https://en.wikipedia.org/wiki/Double-precision_floating-point_format
>
>
> Dr. Marko Vojinovic
> Group for Gravitation, Particles and Fields
> Institute of Physics
> University of Belgrade
> ======================
> home page: www.markovojinovic.com
> e-mail: vmarko at ipb.ac.rs
>
>
> --
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at mail.ipb.ac.rs
> https://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20260511/2c343046/attachment.htm>
More information about the QGHG-it-dev-list
mailing list