• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sort 1 problem Java SPOJ

Object Storage Arubacloud
0 głosów
142 wizyt
pytanie zadane 19 marca 2023 w SPOJ przez skyynet Początkujący (410 p.)

Siema, próbuje rozwiązać zadanie ze SPOJ Sort 1, jakiś czas temu rozwiązywałem je w Pythonie i zrobiłem je na dosyć podobnej zasadzie i kod działa w obu przypadkach identycznie, ale pokazuję mi cały czas błędną odpowiedź. Jest ktoś w stanie znaleźć mój błąd?

link do zadania: https://pl.spoj.com/problems/PP0506A/

import java.util.Scanner;
import java.util.Arrays;
import java.lang.Comparable;

class Point implements Comparable
{
    String name;
    int distance;

    Point(char name, int x, int y)
    {
        this.name = name + " " + x + " " + y;
        this.distance = (x * x) + (y * y);
    }

    @Override
    public int compareTo(Object t)
    {
        Point second_Point = (Point) t;
        if(this.distance > second_Point.distance)
            return 1;
        else
            return -1;
    }

    @Override
    public String toString()
    {
        return this.name;
    }
}

class Sort_1
{
    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);
        int t = input.nextInt();
        for(int i = 0; i < t; i++)
        {
            int n = input.nextInt();
            input.nextLine();
            Point[] points = new Point[n];
            for(int j = 0; j < n; j++)
            {
                char name = input.next().charAt(0);
                int x = input.nextInt();
                int y = input.nextInt();
                points[j] = new Point(name, x, y);
            }
            Arrays.sort(points);
            for(Point point : points)
            {
                System.out.println(point);
            }
        }
        String enter = input.nextLine();
        input.nextLine();
        input.close();
    }
}
komentarz 20 marca 2023 przez Whistleroosh Maniak (56,980 p.)
Formatowanie wyjścia jest na pewno dobre? Wygląda jakby sortowało dobrze, więc pewnie output ma zły format
komentarz 20 marca 2023 przez skyynet Początkujący (410 p.)
Też mi się wydaję, że sortowanie nie jest problemem w tym kodzie, ale nie potrafię znaleźć tego błędu :(
komentarz 20 marca 2023 przez kozacko Obywatel (1,580 p.)

@skyynet, Możesz podać co dokładnie źle ci wypisuje? Konkretny Input i jaki daje return

komentarz 20 marca 2023 przez skyynet Początkujący (410 p.)
W sensie problem jest w tym że nie wiem co źle wypisuje. Na spoju pokazuję błędną odpowiedź a o to przykład kodu:

2
3
A 0 0
C 5 5
B -1 1
A 0 0
B -1 1
C 5 5

1
X 1 1
X 1 1

PS D:\Java Programy\ZadaniaSPOJ_Java\src>

1 odpowiedź

+2 głosów
odpowiedź 20 marca 2023 przez kozacko Obywatel (1,580 p.)
wybrane 21 marca 2023 przez skyynet
 
Najlepsza

Dobra trochę pogłówkował człowiek ....


 

Problem z kodem polega na tym, że zły format nazwy punktu jest przypisywany do obiektu Point. W oryginalnej specyfikacji, nazwa punktu jest opisana jako ciąg co najwyżej 10 liter alfabetu łacińskiego, ale w kodzie, litera jest rzutowana na typ char i przypisana jako pojedynczy znak. W wyniku tego, każdy punkt zostanie oznaczony tylko jednym znakiem, a nie unikalnym ciągiem liter.

Aby to naprawić, zmodyfikuj konstruktor klasy Point, aby korzystał z nazwy punktu, zamiast pojedynczego znaku. Zmodyfikowany konstruktor powinien wyglądać tak:

 

Point(String name, int x, int y)
{
    this.name = name;
    this.distance = (x * x) + (y * y);
}

Następnie zmodyfikuj część kodu, która tworzy nowe obiekty Point, tak aby używała ciągu znaków jako nazwy punktów:

 

for(int j = 0; j < n; j++)
{
    String name = input.next();
    int x = input.nextInt();
    int y = input.nextInt();
    points[j] = new Point(name, x, y);
}

Teraz powinno elegancko sortować od środka, jakbyś miał dodatkowe pytania to daj znaka.

 

komentarz 21 marca 2023 przez skyynet Początkujący (410 p.)
Działa! Bardzo dziękuję za pomoc ;D

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
pytanie zadane 5 lipca 2023 w SPOJ przez lada_4455 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 375 wizyt
pytanie zadane 11 września 2020 w SPOJ przez cupoforanges Początkujący (380 p.)
0 głosów
2 odpowiedzi 458 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...