gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/kodovi/stek-i-red-opsluzivanja/InteraktivniPostFix.java b/kodovi/stek-i-red-opsluzivanja/InteraktivniPostFix.java
--- /dev/null
@@ -0,0 +1,96 @@
+/**
+ * Postfiksna notacija prvo izlistava operande, a potom operacije.
+ *
+ * Ovaj program predstavlja interaktivni postfiksni kalkulator u tome
+ * se unose
+ *
+ */
+public class InteraktivniPostFix {
+
+ public static void main(String[] args) {
+
+ System.out.println("Postfiksni kalkulator.");
+ System.out.println("Za kraj unesite tačku '.'");
+ String str = Svetovid.in.readLine("-ulaz?");
+
+ Stek<Integer> stek = new Stek<Integer>(100);
+ int broj = 0;
+
+ while (!str.equals(".")) {
+ if (jeOperator(str)) {
+ char c = str.charAt(0);
+ try {
+ obradiOperaciju(c, stek);
+ } catch (Exception e) {
+ System.out.println("Greska:" + e.getMessage());
+ }
+ } else {
+ // nije operator, probamo da li je broj
+ boolean jeBroj = true;
+ try {
+ broj = Integer.valueOf(str);
+ } catch (NumberFormatException e) {
+ jeBroj = false;
+ }
+ if (jeBroj) {
+ stek.stavi(broj);
+ } else {
+ System.out.println("Greska - nije ni broj ni operacija!");
+ System.out.println("Za kraj unesite tačku '.'");
+ }
+
+ }
+ stanjeSteka(stek);
+ System.out.print("-ulaz? ");
+ str = Svetovid.in.readLine();
+ }
+ stanjeSteka(stek);
+ System.out.println("-kraj rada");
+ }
+
+ /**
+ * @param c
+ * @param s
+ */
+ public static void obradiOperaciju(char c, Stek<Integer> s) {
+ int op2 = s.skiniVrh();
+ int op1 = s.skiniVrh();
+
+ switch (c) {
+ case '+':
+ s.stavi(op1 + op2);
+ break;
+ case '-':
+ s.stavi(op1 - op2);
+ break;
+ case '*':
+ s.stavi(op1 * op2);
+ break;
+ case '/':
+ s.stavi(op1 / op2);
+ break;
+ case '%':
+ s.stavi(op1 % op2);
+ break;
+ }
+ }
+
+ public static boolean jeOperator(String str) {
+ if (str.length() == 1) {
+ char c = str.charAt(0);
+ if (c == '+' || c == '-' || c == '*' || c == '/' || c == '%')
+ return true;
+ }
+ return false;
+ }
+
+ public static void stanjeSteka(Stek<Integer> s) {
+ if (s.jePrazan()) {
+ System.out.println("rezultat: ne postoji");
+ } else {
+ int vrh = s.vrh();
+ System.out.println("rezultat: " + vrh);
+ }
+ }
+
+}