Odovzdávanie úloh cez palma.strom.sk
Úvodné kroky:
- Zaregistrujte sa v systéme palma.strom.sk. Vyberte si osobnú registráciu.
- Ako prihlasovacie meno si zvoľte svoje priezvisko (t.j. Janko Hraško si ako login zvolí
hrasko
). Vo svojom profile vyplňte meno a priezvisko.
Pravidlá pre odosielané riešenia:
- Vstup čítajte zo štandardného vstupu
System.in
, výstup zapisujte do štandardného výstupuSystem.out
- Pozor na znaky konca riadkov
- Môžete odovzdávať zdrojový kód len jednej triedy. Ak potrebujete pomocné triedy, viete ich vytvoriť ako vnútorné triedy (
public static class
…) vo vnútri triedy. - Odosielaná trieda sa kvôli mechanizmu automatického vyhodnocovania musí volať source
- Trieda nesmie mať definovaný package (pred odosielaním riešenia vymažte prvý riadok, kde je názov balíčka)
- Riešenia možno odosielať len do termínu stanoveného pri zadaní úlohy. Keďže sa pre účely odovzdávania úloh bude využívať systém Palma a nechceme zneprehľadniť štruktúru súťaží, systém dovolí odoslanie aj po stanovenom termíne. Avšak takéto zadania prijaté po stanovenom termíne nebudú akceptované.
Upozornenie:
- Všetky odoslania zdrojových kódov riešenia na otestovanie sú logované.
- Ak otestovanie skončí neúspešne, môžete po úprave svoje riešenie opätovne zaslať na otestovanie.
Testovacia úloha
Pre účely „zoznámenia sa“ so systémom Palma bola vytvorená jednoduchá testovacia úloha palma.strom.sk/PAZ1bS3/S0U1/.
Ukážková šablóna na spracovanie vstupu a výstupu pre testovaciu úlohu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 import java.util.Scanner;
public class source {
public static long minMaxRozdiel(int[] pole) {
return 0;
}
public static void main(String[] args) {
// Vytvorime scanner
Scanner citac = new Scanner(System.in);
// Z prveho riadku precitame pocet testovacich sad (riadkov)
int pocetRiadkov = citac.nextInt();
// Postupne spracuvame kazdy riadok
for (int i = 0; i < pocetRiadkov; i++) {
// Ako prve cislo v riadku precitame pocet cisel v riadku
int pocetCiselVRiadku = citac.nextInt();
// Vytvorime si pole a nacitame do neho cisla z riadku
int[] cisla = new int[pocetCiselVRiadku];
for (int j = 0; j < pocetCiselVRiadku; j++)
cisla[j] = citac.nextInt();
// Vypiseme rozdiel maximalnej a minimalnej hodnoty v riadku
System.out.println(minMaxRozdiel(cisla));
}
}
}
Ak by ste vo svojich programoch vo fáze testovania potrebovali načítať vstup zo súboru, môžete použiť tento prístup (jediný rozdiel je v riadku, kde sa vytvára Scanner
, a v klauzule throws
metódy main
):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import java.io.File;
import java.util.Scanner;
public class source {
public static long minMaxRozdiel(int[] pole) {
return 0;
}
public static void main(String[] args) throws Exception {
// Vytvorime scanner
Scanner citac = new Scanner(new File("vstup.txt"));
// Z prveho riadku precitame pocet testovacich sad (riadkov)
int pocetRiadkov = citac.nextInt();
// Postupne spracuvame kazdy riadok
for (int i = 0; i < pocetRiadkov; i++) {
// Ako prve cislo v riadku precitame pocet cisel v riadku
int pocetCiselVRiadku = citac.nextInt();
// Vytvorime si pole a nacitame do neho cisla z riadku
int[] cisla = new int[pocetCiselVRiadku];
for (int j = 0; j < pocetCiselVRiadku; j++)
cisla[j] = citac.nextInt();
// Vypiseme rozdiel maximalnej a minimalnej hodnoty v riadku
System.out.println(minMaxRozdiel(cisla));
}
}
}
Pozor: V tomto príklade neodchytávame výnimky (try/catch), čo je v Java programoch pri práci so súbormi nevyhnutné. Namiesto toho prípadné výnimky vyhadzujeme ďalej. Toto nie je správny spôsob programovania, ale pre účely vyladenia programov je to najrýchlejšie riešenie (vyžaduje najmenej zmien v zdrojovom kóde).