Błędnie przedstawia mi liczbę float w postaci hex

0

mam taki kod odpowiedzialny za przedstawienie liczby float w postaci hex.
Niestety w pewnych miejscach mam nadmiar "f" nie wiem czemu. Ma ktoś jakiś pomysł?
http://pastebin.com/R8A9xCJd
Screen z wyjściem w załączniku.

0

Przede wszystkim to undefined behavior. W C to jeszcze jest dozwolone (ale może być trap represntation), ale w C++ nie.

Po drugie jeżeli już musisz tak robić (bo np. w GCC będzie to działać) to użyj unsigned char w tej unii a nie char. A najlepiej std::uint8_t.

0
#include <bitset>
#include <iostream>
using namespace std;
 
int main()
  {
   union Repr { float f; uint32_t u; } r;
   unsigned n;
   for(cin>>n;n--;cout<<bitset<32>(r.u)) cin>>r.f;
   return 0;
  }
0

Wzorowałem się na przykładach z C, tam pomysłodawca przedstawiał to z pomocą printf(), niestety jak chcę przedstawić poszczególne bajty wyskakują mi krzaczki zamiast postaci szesnastkowej. Przekonwertowałem więc do short i niby wartości są o.k., niestety nie moge się w żaden sposób pozbyć nadmiaru "f" w niektórych przykładach.

0

No właśnie i tu dochodzimy do sedna całego mojego problemu ze SPOJ... Jakie w końcu biblioteki są "dozwolone" w SPOJu? Bo kiedys działało mi tylko iostream, 3h temu zobaczyłem, że działa mi <vector> (co mnie strasznie poirytowało...). Jest gdzieś jakis spis dozwolonych bibliotek?

0

Jak wybierzesz że piszesz w c++14 to będziesz mieć wszystkie standardowe dla C++14 nawet <thread> z tym że ilość wątków na proces jest ograniczone na SPOJ z poziomu systemu.
Czyli dołączyć możesz ale z użyciem ... to już inna sprawa.

0

@Endrju jak uzywam int8 to wynik mam taki sam jak z użyciem samego char - pokazuje mi krzaczki zamiast postaci szesnastkowej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1