gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Primeri za postfiksni kalkulator
[spa1-materijali.git] / kodovi / stek-i-red-opsluzivanja / InteraktivniPostFix.java
1 /**
2 * Postfiksna notacija prvo izlistava operande, a potom operacije.
3 *
4 * Ovaj program predstavlja interaktivni postfiksni kalkulator u tome
5 * se unose
6 *
7 */
8 public class InteraktivniPostFix {
10 public static void main(String[] args) {
12 System.out.println("Postfiksni kalkulator.");
13 System.out.println("Za kraj unesite tačku '.'");
14 String str = Svetovid.in.readLine("-ulaz?");
16 Stek<Integer> stek = new Stek<Integer>(100);
17 int broj = 0;
19 while (!str.equals(".")) {
20 if (jeOperator(str)) {
21 char c = str.charAt(0);
22 try {
23 obradiOperaciju(c, stek);
24 } catch (Exception e) {
25 System.out.println("Greska:" + e.getMessage());
26 }
27 } else {
28 // nije operator, probamo da li je broj
29 boolean jeBroj = true;
30 try {
31 broj = Integer.valueOf(str);
32 } catch (NumberFormatException e) {
33 jeBroj = false;
34 }
35 if (jeBroj) {
36 stek.stavi(broj);
37 } else {
38 System.out.println("Greska - nije ni broj ni operacija!");
39 System.out.println("Za kraj unesite tačku '.'");
40 }
42 }
43 stanjeSteka(stek);
44 System.out.print("-ulaz? ");
45 str = Svetovid.in.readLine();
46 }
47 stanjeSteka(stek);
48 System.out.println("-kraj rada");
49 }
51 /**
52 * @param c
53 * @param s
54 */
55 public static void obradiOperaciju(char c, Stek<Integer> s) {
56 int op2 = s.skiniVrh();
57 int op1 = s.skiniVrh();
59 switch (c) {
60 case '+':
61 s.stavi(op1 + op2);
62 break;
63 case '-':
64 s.stavi(op1 - op2);
65 break;
66 case '*':
67 s.stavi(op1 * op2);
68 break;
69 case '/':
70 s.stavi(op1 / op2);
71 break;
72 case '%':
73 s.stavi(op1 % op2);
74 break;
75 }
76 }
78 public static boolean jeOperator(String str) {
79 if (str.length() == 1) {
80 char c = str.charAt(0);
81 if (c == '+' || c == '-' || c == '*' || c == '/' || c == '%')
82 return true;
83 }
84 return false;
85 }
87 public static void stanjeSteka(Stek<Integer> s) {
88 if (s.jePrazan()) {
89 System.out.println("rezultat: ne postoji");
90 } else {
91 int vrh = s.vrh();
92 System.out.println("rezultat: " + vrh);
93 }
94 }
96 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner