Twój sposób liczenia odległości jest straszny.
Powiedz co dostaniesz dla danych
A 0 -1
B -2 0
C 0 -4
Nawiasem pisząc w tym zadaniu wystarczy operowanie na wartościach całkowitych.
Dlaczego? Tego już nie wyjaśnię
Nie ma to związku z faktem, że żadne dwa punkty nie leżą w jednej odległości
Gratuluję zaliczenia.
Dzięki korkirw poprawiłem a raczej skróciłem sposób liczenia bo rzeczywiście po wprowadzeniu zestawu danych który podałeś wychodziły głupoty. Zadanie zaliczone.
Nawiasem pisząc w tym zadaniu wystarczy operowanie na wartościach całkowitych. Dlaczego? Tego już nie wyjaśnię
Mogę się mylić ale wydaj mi się że chodzi Ci o zapis w zadaniu który mówi:
Żadne 2 punkty nie leżą w tej samej odległości od środka układu współrzędnych.
Cześć - potrzebuję pomocy przy znalezieniu błędu w kodzie (program napisany w Javie). Gdyż sam go nie mogę znaleźć - SPOJ odrzuca rozwiązanie, komplilator (IntelliJ) pokazuje wszystko poprawnie.
Trochę kontekstu - to zadanie już rozwiązałem jakiś czas wcześniej w C++, uczę się Javy aby mieć szansę na staż w jednej firmie. ‘‘Jedyne’’ co zrobiłem to ‘‘przetłumaczyłem’’ kod z C++ na Javę - pilnowałem aby endline’y były tam gdzie powinny, przerwy itp itd.
Przeprowadzałem testy na wielu zestawach danych i program sortuje za każdym razem poprawnie. Nie rozumiem z czym SPOJ ma problem niestety. Podam kod z C++ z którego ‘‘tłumaczyłem’’ (i który został zaakceptowany przez SPOJ) oraz kod w Javie, z którym SPOJ ma problem.
Z góry dziękuję za pomoc.
- Nie powinno się dołączać działających kodów (linków do takich kodów).
- Kod, na którym się wzorujesz, jest według mnie strasznie rozwleczony.
Mój kod ( w ogólnych założeniach dość podobny, też tworzę klasę Punkt) ma 70 (w dodatku sam zaimplementowałem sortowanie), a Twój ma ponad 150 linii.
A z całą pewnością nie można nazwać mojego kodu wzorcowymi, jest wiele lepszych rozwiązań. Ciekawy jestem co inni sądzą o tym kodzie.
Myślę, że łatwiej byłoby Ci przetłumaczyć na Javę prostszy kod.
Dzięki za odpowiedź
-
Masz rację, jednakże chciałem załączyć oba kody - może ktoś bardziej doświadczony ode mnie by coś wyłapał, coś co by wskazywało czemu jeden kod działa a drugi nie.
-
Zgodzę się przy rozwleczeniu, przy C++ trochę ''na ślepo" dawałem się prowadzić za rączkę przez Visual Studio który zachęcał do wypełniania konstruktorów, getterów i setterów poza klamrami klasy (głównie to tak rozwlekło kod). Ale jak SPOJ przyjmuje to już tak zostawiłem. Jak mi się będzie chciało to wrzucę tam bardziej kompaktowy kod. Także są settery niepotrzebne przy kodzie w C++ (przeciążony konstruktor już je ma, wystarczyłoby zamiast nowaX = x używać czegoś w stylu this.x = x jak zrobiłem w kodzie Java - jak się da).
Tak czy inaczej dzięki za sugestie.
EDIT: Postanowiłem kod skrócić już teraz, skrócił się do 100 linii.
witam, zerknąłby ktoś na kod ?
https://ideone.com/Mpgqfo20
Zerknąłem, no i trochę błędów tam jest.
.
.
.
.
.
===================================
Jeżeli dostajesz WA [wrong answer - błdna odpowiedź], to natychmiast powinieneś, ze skupienie i zrozumieniem jeszcze raz zajrzeć do treści zadania:
nazwa x y
gdzie nazwa jest unikalnym dla każdego testu ciągiem co najwyżej 10 liter alfabetu łacińskiego,
10 [słownie dziesięć] != 1 [słownie jeden]
PS
dokleiłeś siędo wątku, ale warto także do niego zajrzeć.
W funkcji sortowanie_babelkowe jest parametr int n natomiast wewnatrz funkcji jest deklaracja char n
Moze to wprowadzac zamieszanie.
Jeszcze obliczanie odleglosci punktu.
moze moj test jest troche zlosliwy i moze sedzia nie ma tego typu testu.
wejscie
1
3
A 0 0
C 1 1
B 0 -1
wyjscie
A 0 0
B 0 -1
C 1 1
math.h jest biblioteka typowa dla zwyklego C
W funkcji sortowanie_babelkowe jest parametr int n natomiast wewnatrz funkcji jest deklaracja char n
Moze to wprowadzac zamieszanie.
Jeszcze obliczanie odleglosci punktu.
moze moj test jest troche zlosliwy i moze sedzia nie ma tego typu testu.wejscie
1
3
A 0 0
C 1 1
B 0 -1
wyjscie
A 0 0
B 0 -1
C 1 1math.h jest biblioteka typowa dla zwyklego C
masz racje, nazwa n mogla robic zamieszanie, jednak po zmianie nazwy,by uniknac powtorek dalej jest bledna odpowiedz.
math.h jednak z tego co widze moze byc stosowana rowniez co C++ gdzie ulatwia obliczanie poteg i pierwiastkow
Niestety jest problem z tym, że dopuszczasz nazwy tylko jednoliterowe. Co Twój program zrobi, gdy w teście będzie nazwa dwu, trzy,… literowa. Gdybyś dopuścił nazwy 100 literowe, to rzeczywiście z punktu widzenia logiki rozwiązanie nie przeszkadzałoby to. Poszedłeś w złą stronę.
C++ dopuszcza bibliotekę math.h ale dlaczego nie korzystać z biblioteki dedykowanej wprost do C++ czyli cmath? Masz zamiar w przyszłości swój kod przerabiać na C?
dobrze, jednak po zmianie rodzaju zmiennej ze znakow czyli char na string SPOJ nadal uwaza ze jest bledna odpowiedz, wiec nie w tym problem. Mysle ze skoro i jedna i druga biblioteka spelnia swoje zadanie to nie ma co sie zaglebiac co dalej bede z tym robil. Wazniejsza kwestia dla mnie jest rozwiazanie zagadki dlaczego kod nie przechodzi, co nie dziala poprawnie