Programski jeziki - domača naloga 6
6. DN: [Rok oddaje: --- kadarkoli ]
Na http://acm.uva.es/problemset/
si med 1600 problemi (Volume I - VIII, Volume C - CVI) izberi vsaj 3 poljubne
probleme in jih reši v Javi. Oddaj SLOVENSKO besedilo problema in rešitev
naloge. Da boš lahko preveril, kako ti gre reševanje od rok, se lahko prijaviš v
sistem, ki ti omogoča on-line preverjanje pravilnosti naloge!
Na
http://rc.fmf.uni-lj.si/matija/PI/Pi2004.htm si lahko ogledaš (pri
http://www.oblacek.com/pi/ ), katere
naloge so npr. rešili udeleženci spletnega tekmovanja, ki poteka. Med njimi je
veliko dijakov!
Na predavanjih ste zastavili vprašanje, kako brati podatke s standardnega
vhoda. No, če bi malo pobrskali po navodilih (na PRVI strani) tega strežnika, bi
hitro prišli do
povezave, kjer je pojasnjeno osnovni princip:
- Branje je izvedeno z metodo static String ReadLn
(int maxLg), ki prebere vrstico kot niz (to metodo pač vključite v
svoje programe - dobite jo na prej omenjeni povezavi)
- Če ne vemo, koliko je vrstic (če naloga pravi - beri, dokler ne prebereš
vseh podatkov ali pa, dokler ni konec datoteke, ...) ves postopek vključimo v
while ((input = Main.ReadLn (255)) != null)
- Še enostavneje je tako, kot je v primeru2. Tu z
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in)); // branje s stand. vhoda
povemo, da bomo brali s standardnega vhoda.
Beremo pa (spet vrstico) potem z metodo
in.readLine(). Tu je potrebno glavno
metodo dpoloniti s pristavkom throws Exception
- public static void main(String args[]) throws
Exception {
- Prebrana vrstica je v spremenljivki
input tipa
String. Ta
vrstica LAHKO vsebuje tudi presledke. Npr.
- Če je več kot en podatek v vrstici, posamezne
podatke izluščimo s pomočjo razreda
StringTokenizer.
- StringTokenizer idata = new StringTokenizer
(input);
- vsak podatek dobimo z
String podatek = idata.nextToken();
- Prvi klic metode
nextToken da
prvi podatek (kot niz) - (v nasem primeru "12"),
drugi klic drugega (v nasem primeru "24"),
...
- Za podrobnosti si poglejte dokumentacijo
- Podatke si lahko pripravimo na datoteko.
Standardni vhod potem simuliramo s pomočjo preusmeritve (na nivoju oper.
sistema). To morate znati iz predmeta OSIO. Konkretno:
- Prevedemo Java datoteko in pripravimo
tekstovno datoteko s podatki (npr. POD.TXT)
- Gremo v konzolno okno
- Postavimo se v imenik s prevedenim
programom.
- Natipkamo java MojProgram <POD.TXT >REZ.TXT
- Rezultati bodo na REZ.TXT
- Zgled 1 / (rešena
naloga 100 s strežnika - ta seveda ne šteje!)
- Zgled 2 / drugi način branja (besedilo,
rešitev)
In še
- Če želite preverjati programe on-line, se morate
registrirati.
Tam dobimo registracijsko število
- Pri on line preverjanju, se morajo programi obvezno začeti s
class Main { in ne s
public class Poljubno_ime {, kot smo bili vajeni mi (vsaka rešitev je
torej v datoteki Main.java, kar je malo
nerodno!)
- Naloge pošiljamo na naslov judge@uva.es
v samem sporocilu (v telesu sporočila) napisemo
@BEGIN_OF_SOURCE_CODE
Tukaj pride KODA
@END_OF_SOURCE_CODE
V kodi pa mora biti komentar, kjer pise
/* @JUDGE_ID: 43XFDS 100 */
kjer je 43XFSD tvoj user ID (kot ti je bil poslan) in 100 stevilka naloge (ce
posiljas resitev naloge 100)
-
=======================