gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Primeri za koriscenje steka i reda
authorDoni Pracner <quinnuendo@gmail.com>
Sat, 16 May 2015 17:02:34 +0000 (19:02 +0200)
committerDoni Pracner <quinnuendo@gmail.com>
Sat, 16 May 2015 17:02:34 +0000 (19:02 +0200)
kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java [new file with mode: 0644]
kodovi/stek-i-red-opsluzivanja/PamcenjePuta.java [new file with mode: 0644]
kodovi/stek-i-red-opsluzivanja/RezultatiTrke.java [new file with mode: 0644]
kodovi/stek-i-red-opsluzivanja/StekRed.java [new file with mode: 0644]

diff --git a/kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java b/kodovi/stek-i-red-opsluzivanja/MedjuSpremnik.java
new file mode 100644 (file)
index 0000000..fdbdced
--- /dev/null
@@ -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<Character> 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 (file)
index 0000000..e94cb16
--- /dev/null
@@ -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<String> 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 (file)
index 0000000..d77b1d9
--- /dev/null
@@ -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<Integer> 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 (file)
index 0000000..6f4dbe4
--- /dev/null
@@ -0,0 +1,43 @@
+/**\r
+ * Demonstracija upotrebe steka i reda opsluzivanja znakova.\r
+ * \r
+ */\r
+public class StekRed {\r
+       public static void main(String[] args) {\r
+\r
+               //System.out.println("Unesite string: ");\r
+               String str = "0123456789";// Svetovid.in.readLine();\r
+\r
+               System.out.println();\r
+\r
+               Stek<Character> stek = new Stek<>(str.length());\r
+\r
+               for (int i = 0; i < str.length(); i++) {\r
+                       stek.stavi(str.charAt(i));\r
+                       System.out.println(stek);\r
+               }\r
+\r
+               Red<Character> red = new Red<>(str.length());\r
+\r
+               for (int i = 0; i < str.length(); i++) {\r
+                       red.naKraj(str.charAt(i));\r
+                       System.out.println(red);\r
+               }\r
+\r
+               char c;\r
+\r
+               System.out.println("Sadrzaj steka");\r
+               while (!stek.jePrazan()) {\r
+                       c = stek.skiniVrh();\r
+                       System.out.print(c);\r
+               }\r
+               System.out.println();\r
+\r
+               System.out.println("Sadrzaj reda opsl.");\r
+               while (!red.jePrazan()) {\r
+                       c = red.izbaciPrvi();\r
+                       System.out.print(c);\r
+               }\r
+               System.out.println();\r
+       }\r
+}
\ No newline at end of file
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner