1 / 5
Dec 2023

Cześć, czy mógłby koś sprawdzić dlaczego ten kod nie przechodzi sędziego? Przeczytałem wątki z tym zadaniem, nie znalazłem testów ze starego forum

  • created

    Dec '23
  • last reply

    Dec '23
  • 4

    replies

  • 210

    views

  • 2

    users

  • 1

    like

Ewentualnie jak wyciągnąć(rzutować?) surowe bajty z pamięci reprezentujące tą zmienną float?. Chyba za pomocą wskaźników, ale nie wiem dokładnie jak. Wtedy mógłbym w automacie zrobić sobie testy i porównać wyliczone przez funkcję z tymi z pamięci. Z góry dzięki za odpowiedź.

Twój kod nie działa dobrze w zakresie (-2, 2). Przykładowe testy:

1.21961
40 1c 1c 50 - bad
3f 9c 1c 50 - good

1.81885
40 68 d0 20 - bad
3f e8 d0 20 - good

1.99846
40 7f cd 80 - bad
3f ff cd 80 - good

1.13665
40 11 7d d0 - bad
3f 91 7d d0 - good

1.52955
40 43 c8 70 - bad
3f c3 c8 70 - good

-1.07406
c0 9 7a e0 - bad
bf 89 7a e0 - good

1.09125
40 b ae 20 - bad
3f 8b ae 20 - good

Warto zauważyć, że kod jest nieoptymalny dla dużych liczb typu float.

rzutowanie reinterpret_cast
unsigned char* hip = reinterpret_cast<unsigned char*>(&num);

Wyłożyłem się na wykładniku, już go naprawiłem i uprościłem. Po usunięciu sprawdzania minusa po zerze kod też przeszedł. Nieoptymalny z powodu mnożenia i dzielenia float przez 2?

Widzę, że udało się zaliczyć. Ach nieważne musiałem coś w nocy pomylić :wink: