5 / 5
Feb 2017

Siema.
Szukałem podobnego, ale chyba nigdzie nie ma wątku z tym problemem.
Otóż chodzi o: http://pl.spoj.com/PDSTPROG/problems/TRIDCT/6 .
A mianowicie, wpadłem na (lepszy lub gorszy) pomysł jak to rozwiązać. Ubzdurałem sobie, że każdy trójkąt da się wpisać w prostokąt. Jako iż jest to układ współrzędnych z odpowiednich długości boków prostokąta i Pitagorasa da się obliczyć boki trójkąta. Później wybieramy najdłuższy bok i sprawdzamy czy suma kwadratów krótszych boków jest mniejsza, większa lub równa kwadratowi najdłuższego boku. Z własności trójkąta wiadomo, że jeśli suma jest mniejsza to tr jest ostry, jeśli jest równa to prostokątny, a jeśli większa to rozwarty.
To wynika z analizy zadania. Postanowiłem więc przełożyć to na kod: https://ideone.com/qtjJ3g4.
Z góry mówię, że te cout, czy jakieś inne mniej ważne wzory i obliczenia są tylko dla mojej wiadomości, co by sprawdzić poprawność działań.

Zdaję sobie sprawę, że można ten kod zoptymalizować, ale jako początkujący wolę robić wszystko na piechotę, żeby mniej błędów popełniać w skomplikowanych kodach.

A teraz pytanie, co przekombinowałem, albo zapomniałem, że ten kod nie działa?

  • created

    Feb '17
  • last reply

    Feb '17
  • 4

    replies

  • 482

    views

  • 2

    users

  • 2

    links

1) Źle sprawdzasz warunek zakończenia programu.
2) Skąd założenie, że boki trójkąta będą miały całkowitą długość?
3) Przed wrzuceniem na SPOJ-a usuń swoje printy.
4) Jako bonus: usuń conio.h, bo nie jest do niczego potrzebne. Poza tym jest to nagłówek niestandardowy, zatem na SPOJ-u się nawet nie skompiluje.

  1. Tego się domyślałem, ale to i tak mniejsza o to póki co.
  2. Tu mój błąd przyznaje.
  3. To wiem :slight_smile:
  4. Niektóre biblioteki mi zostały z innych programów, wiem, że są niepotrzebne :slight_smile:

Ale mimo wszystko nadal nie wiem dlaczego program wypisuje mi przy praktycznie każdym zestawie testowym "OP". Wychodzi na to, że spełnia się warunek dla dwóch IFów, ale dlaczego?

Odpowiedź brzmi: bo natrzaskałeś if-ów jak szalony i przez to nie zauważyłeś, że popełniłeś prosty błąd składniowy. Co gorsze, użyłeś do tego technologii "copy-paste", czyż nie? :wink:

Także na Twoim miejscu zacząłbym od zredukowania ilości warunków, bo jest spora szansa, że przy okazji naprawisz wypisywanie rezultatu.

Faktycznie kopiuj wklej, ale przyznaje się bez bicia, że mam problem ze sobą. Zawsze szukam najdłuższej drogi do rozwiązania problemu. Gdybym był kierowcą to z Warszawy do Krakowa jeździłbym przez Berlin :smiley:
Jakoś proste rozwiązania są dla mnie zbyt proste, ale postaram się je znaleźć :smiley:

EDIT: Po godzinach poszukiwań znalazłem winowajce :smiley: Faktycznie, gdybym może tego nie robił ctrl+c, ctrl+v to bym zauważył go :smiley: