Wpis z mikrobloga

Mirki, co robić?
Na maturze z informatyki do zadania 4.1 ( http://plikicke.cie.men.gov.pl/_EGZAMIN_MATURALNY/2016/FORMULA_OD_2015/informatyka/MIN-R2_1P-162.pdf ) napisałem taki algorytm:
http://pastebin.com/RGpiBUtE
Teoretycznie powinno wszystko działać, ale z powodu ułomności kompilatora (tak przynajmniej mi się mocno wydaje) nie zalicza punktu (400,200) jako leżącego na okręgu wpisanym w kwadrat o boku 400. I w ten oto sposób algorytm wypisuje wynik:
256 8
7853
zamiast prawidłowego:
256 8
400 200
7852
Jeżeli linijkę

if ((pow (x[i]-200, 2) + pow(y[i]-200, 2))==200*200 )
zamienić na

if (sqrt((pow (x[i]-200, 2) + pow(y[i]-200, 2)))==200 )
to algorytm daje prawidłowe wyniki. A przecież matematycznie obie linijki to jest to samo zapytanie. A wyniki są różne. Odwoływać się do CKE? Jestem w stanie cokolwiek ugrać? Czy wszystko przepadło i powinienem był znać ułomności narzędzia z którego decydowałem się korzystać?
#matura #informatyka #matura2016 i trochę jednak #programowanie bo może moja diagnoza jest niepoprawna
  • 16
  • Odpowiedz
Teoretycznie powinno wszystko działać, ale z powodu ułomności kompilatora (tak przynajmniej mi się mocno wydaje) nie zalicza punktu (400,200) jako leżącego na okręgu wpisanym w kwadrat o boku 400. I w ten oto sposób algorytm wypisuje wynik:


@ajcomorpdezrporuewneclawonliptneilk: NIGDY #!$%@? NIGDY NIE UZYWAJ == JAK MASZ TYP DOUBLE ALBO O ZGROZO FLOAT
  • Odpowiedz