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

question-closed SKARBFINDER SPOJ - Wyjście

Object Storage Arubacloud
0 głosów
308 wizyt
pytanie zadane 22 maja 2017 w Java przez Jedyn Obywatel (1,200 p.)
zamknięte 25 maja 2017 przez Jedyn

Witam. Tak jak w temacie, nie za bardzo rozumiem czym jest wyjście dla zadania testowego podanego w SPOJ.
Dla danych 
 

3
3
1 1
0 2
3 1
4
0 1
2 1
1 1
3 1
2
0 1
0 2


Wyjściem ma być:

0 < --kierunek 1 < -- liczba kroków
3< --kierunek 1< -- liczba kroków
studnia
0 3

Ale coś mi się tu nie zgadza lub źle myślę. Przerobiłem sobie to ręcznie i wyniki to :
Dla 1 zestawu: 1 1
2: studnia

3: 0 3

I tak wgl dla czego na wyjściu jest 4 linijki a jest tylko 3 zestawy?
Kod zamieszczam na oddzielnej platformie, tak by przypadkiem ktoś kto nie chce nie zerknął ;).
https://pastebin.com/93er9rAF
P.S Kod przed refactoringiem

komentarz zamknięcia: Problem rozwiązany
komentarz 24 maja 2017 przez Jedyn Obywatel (1,200 p.)

Niestety mam dalej problem. U mnie wszystko działa, wyrzuca wynik po każdym bloku a na ideone błąd. próbowałem usuwać sout'y z zapytaniami o dane ale to i tak nic nie daje  Kod: 

stdin
3
3
1 1
0 2
3 1
4
0 1
2 1
1 1
3 1
2
0 1
0 2

stderr
Exception in thread "main" java.util.NoSuchElementException
	at java.util.Scanner.throwFor(Scanner.java:862)
	at java.util.Scanner.next(Scanner.java:1485)
	at java.util.Scanner.nextInt(Scanner.java:2117)
	at java.util.Scanner.nextInt(Scanner.java:2076)
	at Ideone.main(Main.java:24)

 

 

 

 

import java.util.Scanner;
public class main {
    public static void main(String[] args) {
        int x=0;
        int y=0;
        int zestawy,wskazowki;
        int krok=0;
        int kierunek=5;
        System.out.println("Podaj liczbe zestawow ktore chcesz wprowadzic");
        Scanner scanZ = new Scanner(System.in);
        zestawy=scanZ.nextInt();

        if(zestawy>0 && zestawy<=50){
            for(int i=0; i<zestawy;i++) {
                System.out.println("Podaj liczbę wskazówek: ");
                Scanner scanW = new Scanner(System.in);

                wskazowki = scanW.nextInt();
                int tabK[] = new int[wskazowki];
                int tabKR[] = new int [wskazowki];
                if (wskazowki > 0 && wskazowki <= 100000) {

                    System.out.println("Podaj wskazowke kierunek - liczba krokow");
                    for (int j =0; j< wskazowki;j++){

                        Scanner scanKK = new Scanner(System.in);
                        kierunek=scanKK.nextInt();
                        krok=scanKK.nextInt();
                        //tabK[i] = kierunek;
                        //tabKR[i] = krok;
                        if(!(kierunek>=0 && kierunek <=3) && krok<=10000){
                            System.exit(-1);
                        }
                        else{
                            switch (kierunek)
                            {
                                case 0:
                                    y+=krok;
                                    break;
                                case 1:
                                    y-=krok;
                                    break;                  //Math.abs()
                                case 2:
                                    x-=krok;
                                    break;
                                case 3:
                                    x+=krok;
                                    break;
                            }

                        }



                        }


                }
                if(x==0 && y==0){
                    System.out.println("studnia");
                    x=0;
                    y=0;
                }
                else{
                    if(y >=0)
                    {
                        System.out.println("0 " + y);

                        y=0;
                    }
                    else
                    {
                        System.out.println("1 " + -y);

                        y=0;
                    }
                }
                if(x != 0)
                {
                    if(x >= 0)
                    {
                        System.out.println("3 " + x);
                        x=0;

                    }
                    else
                    {
                        System.out.println("2 "+ -x);
                        x=0;

                    }

                }
            }


        }
    }

}

 

1 odpowiedź

0 głosów
odpowiedź 22 maja 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Dla każdego zestawu danych należy wypisać najkrótszą drogę zgodną z zasadami etykiety poszukiwaczy skarbów, lub słowo studnia, jeśli skarb znajduje się w studni. Drogę oznaczamy tak samo jak na mapie, przez pary kierunek i ilość kroków w tym kierunku wypisanych w jednej linii. Jeśli do skarbu prowadzi prosta droga, należy wypisać tylko jedną linię z kierunkiem i ilością kroków. Jeśli droga musi skręcać, to wtedy pan Skardfinder po przeprowadzeniu na miejscu wizji lokalnej prosił, aby najpierw kroki wykonywać w orientacji północ-południe, a dopiero gdy znajdziemy się na odpowiedniej wysokości w tej orientacji, zacząć robić kroki w orientacji wschód-zachód.
komentarz 22 maja 2017 przez Jedyn Obywatel (1,200 p.)
Chyba naprawiłem, teraz problem bo spoj wywala mi NZEC. Program po wpisaniu bloku ma dawać od razu output czy na sam koniec programu?
komentarz 22 maja 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Nie powinno mieć to żadnego znaczenia

Podobne pytania

0 głosów
1 odpowiedź 251 wizyt
pytanie zadane 23 czerwca 2021 w SPOJ przez Wirla Nowicjusz (180 p.)
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 21 października 2017 w SPOJ przez LockeLamora Użytkownik (740 p.)
0 głosów
1 odpowiedź 362 wizyt
pytanie zadane 24 stycznia 2017 w C i C++ przez Elegant2272 Nowicjusz (120 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...