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

Sort 1 problem Java SPOJ

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
216 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 (57,360 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ź 381 wizyt
pytanie zadane 5 lipca 2023 w SPOJ przez lada_4455 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 431 wizyt
pytanie zadane 11 września 2020 w SPOJ przez cupoforanges Początkujący (380 p.)
0 głosów
2 odpowiedzi 511 wizyt

93,176 zapytań

142,189 odpowiedzi

321,982 komentarzy

62,509 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1637p. - dia-Chann
  2. 1614p. - Łukasz Piwowar
  3. 1599p. - CC PL
  4. 1597p. - Łukasz Eckert
  5. 1572p. - Tomasz Bielak
  6. 1545p. - Michal Drewniak
  7. 1537p. - Łukasz Siedlecki
  8. 1531p. - rucin93
  9. 1509p. - rafalszastok
  10. 1506p. - Marcin Putra
  11. 1487p. - Adrian Wieprzkowicz
  12. 1447p. - Mikbac
  13. 1356p. - ssynowiec
  14. 1289p. - Anonim 3619784
  15. 1169p. - Grzegorz Aleksander Klementowski
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...