From bef3562bb12dc104a5f19e6c8f638b8eca1739c6 Mon Sep 17 00:00:00 2001 From: Doni Pracner Date: Sat, 16 May 2015 19:02:34 +0200 Subject: [PATCH] Primeri za koriscenje steka i reda --- .../MedjuSpremnik.java | 54 +++++++++++++++++++ .../stek-i-red-opsluzivanja/PamcenjePuta.java | 27 ++++++++++ .../RezultatiTrke.java | 24 +++++++++ kodovi/stek-i-red-opsluzivanja/StekRed.java | 43 +++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java create mode 100644 kodovi/stek-i-red-opsluzivanja/PamcenjePuta.java create mode 100644 kodovi/stek-i-red-opsluzivanja/RezultatiTrke.java create mode 100644 kodovi/stek-i-red-opsluzivanja/StekRed.java diff --git a/kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java b/kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java new file mode 100644 index 0000000..fdbdced --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java @@ -0,0 +1,54 @@ +/** + * Medjuspremnik (a.k.a. buffer) sluzi sa skladistenje podataka pre nego sto se + * proslede dalje. + * + * U ovom primeru se pokazuje kako se podaci prvo prikupljaju pre nego sto se + * zapravo ispisu, cime se dobija na efikasnosti ispisa, posto je tipicno + * operacija rada sa nekim spoljim uredjajem relativno spora u odnosu na interne + * operacije, a sa druge strane su takve operacije tipicno slicne brzine i kad + * se salje vise podataka odjednom. + * + * Naravno ovo je samo ilustracija, operacije ispisa i na ekran i na disk su + * tipicno vec optimizovane medjuspremnicima. + * + */ +public class MedjuSpremnik { + + public static final int VEL_SPREMNIKA = 33; + + public static Red spremnik = new Red<>(VEL_SPREMNIKA); + + public static String izlaznifajl = "izlaz.txt"; + + public static void pisiZnak(char c) { + if (spremnik.jePun()) { + isprazni(); + } + spremnik.naKraj(c); + } + + public static void isprazni() { + while (!spremnik.jePrazan()) { + char c = spremnik.izbaciPrvi(); + Svetovid.out(izlaznifajl).print(c); + } + + } + + public static void pisi(String str) { + for (int i = 0; i < str.length(); i++) { + pisiZnak(str.charAt(i)); + } + } + + public static void main(String[] args) { + System.out.println("Unesite reci koje treba ispisati u fajl:"); + String str = Svetovid.in.readLine("rec?"); + while (!str.equals(".")) { + pisi(str); + str = Svetovid.in.readLine("rec?"); + } + Svetovid.out(izlaznifajl).close(); + } + +} diff --git a/kodovi/stek-i-red-opsluzivanja/PamcenjePuta.java b/kodovi/stek-i-red-opsluzivanja/PamcenjePuta.java new file mode 100644 index 0000000..e94cb16 --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/PamcenjePuta.java @@ -0,0 +1,27 @@ +/** + * U nepoznatom gradu idemo u slobodnu šetnju počevši od hotela u kome smo + * smešteni. Bitno nam je da zapamtimo kojim ulicama smo išli na svakom + * skretanju, da bi mogli da se vratimo nazad istim putem koristeći te + * informacije. + */ +public class PamcenjePuta { + + public static void main(String[] args) { + Stek ulice = new Stek<>(); + String str = Svetovid.in.readLine("unesite ulicu:"); + while (!str.equals(".")) { + if (ulice.jePun()) { + System.out.println("nema vise mesta za pamcenje!"); + } else { + ulice.stavi(str); + } + str = Svetovid.in.readLine("unesite ulicu:"); + } + + Svetovid.out.println("Vreme je za vracanje:"); + while (!ulice.jePrazan()) { + System.out.println("Sledeca ulica: " + ulice.skiniVrh()); + } + } + +} diff --git a/kodovi/stek-i-red-opsluzivanja/RezultatiTrke.java b/kodovi/stek-i-red-opsluzivanja/RezultatiTrke.java new file mode 100644 index 0000000..d77b1d9 --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/RezultatiTrke.java @@ -0,0 +1,24 @@ +/** + * Treba beležiti brojeve takmičara kako stižu na cilj, a na kraju ispisati sve + * takmičare u redosledu kojim su došli. Na početku se unosi koliko je ukupno + * takmičara i nakon što svi prođu cilj se ispisuje redosled. + * + */ +public class RezultatiTrke { + + public static void main(String[] args) { + int ukupno = Svetovid.in.readInt("Koliko ima takmicara"); + Red redosled = new Red<>(ukupno); + System.out.println("Unosite brojeve takmicara kako stizu na cilj"); + while (!redosled.jePun()) { + int br = Svetovid.in.readInt("sledeci?"); + redosled.naKraj(br); + } + + System.out.println("Redosled takmičara:"); + while (!redosled.jePrazan()) { + System.out.println(redosled.izbaciPrvi()); + } + } + +} diff --git a/kodovi/stek-i-red-opsluzivanja/StekRed.java b/kodovi/stek-i-red-opsluzivanja/StekRed.java new file mode 100644 index 0000000..6f4dbe4 --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/StekRed.java @@ -0,0 +1,43 @@ +/** + * Demonstracija upotrebe steka i reda opsluzivanja znakova. + * + */ +public class StekRed { + public static void main(String[] args) { + + //System.out.println("Unesite string: "); + String str = "0123456789";// Svetovid.in.readLine(); + + System.out.println(); + + Stek stek = new Stek<>(str.length()); + + for (int i = 0; i < str.length(); i++) { + stek.stavi(str.charAt(i)); + System.out.println(stek); + } + + Red red = new Red<>(str.length()); + + for (int i = 0; i < str.length(); i++) { + red.naKraj(str.charAt(i)); + System.out.println(red); + } + + char c; + + System.out.println("Sadrzaj steka"); + while (!stek.jePrazan()) { + c = stek.skiniVrh(); + System.out.print(c); + } + System.out.println(); + + System.out.println("Sadrzaj reda opsl."); + while (!red.jePrazan()) { + c = red.izbaciPrvi(); + System.out.print(c); + } + System.out.println(); + } +} \ No newline at end of file -- 2.17.1