From 7a9c632a2a7acb69d8ac4cc3a11f4556f6903aa1 Mon Sep 17 00:00:00 2001 From: Doni Pracner Date: Tue, 26 May 2015 14:16:09 +0200 Subject: [PATCH] Stek, primer rada sa fajlovima --- .../stek-i-red-opsluzivanja/StekIFajlovi.java | 93 +++++++++++++++++++ kodovi/stek-i-red-opsluzivanja/p1.txt | 1 + kodovi/stek-i-red-opsluzivanja/p2.txt | 1 + 3 files changed, 95 insertions(+) create mode 100644 kodovi/stek-i-red-opsluzivanja/StekIFajlovi.java create mode 100644 kodovi/stek-i-red-opsluzivanja/p1.txt create mode 100644 kodovi/stek-i-red-opsluzivanja/p2.txt diff --git a/kodovi/stek-i-red-opsluzivanja/StekIFajlovi.java b/kodovi/stek-i-red-opsluzivanja/StekIFajlovi.java new file mode 100644 index 0000000..5685b7a --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/StekIFajlovi.java @@ -0,0 +1,93 @@ +/** + * Napisati program koji + + (a) učitava cele brojeve iz fajlova “p1.txt” i “p2.txt” na dva različita steka celih brojeva + + (b) sa vrha prvog steka uklanja jednocifrene brojeve + + (c) sa vrha drugog steka uklanja neparne brojeve + + (d) spaja podatke sa dva steka u jedan novi, naizmeničnim ubacivanjem + podataka (uzeti u obzir da stekovi ne moraju biti iste dužine) + + (e) ispisuje sadržaj tako dobijenog steka u fajl “pp.txt" + * + */ +public class StekIFajlovi { + + public static Stek ucitajStek(String imef) { + Stek rez = new Stek(); + + while (!Svetovid.in(imef).isEmpty()) { + int broj = Svetovid.in(imef).readInt(); + rez.stavi(broj); + } + Svetovid.in(imef).close(); + + return rez; + } + + public static void ukloniJednocifrene(Stek s) { + if (!s.jePrazan()) { + int broj = s.vrh(); + while (broj < 10 && broj > -10 && !s.jePrazan()) { + s.skiniVrh(); + broj = s.vrh(); + } + } + } + + public static void ukloniNeparne(Stek s) { + if (!s.jePrazan()) { + int broj = s.vrh(); + while (broj % 2 != 0 && !s.jePrazan()) { + s.skiniVrh(); + broj = s.vrh(); + } + } + } + + public static Stek spoji(Stek s1, Stek s2) { + Stek rez = new Stek(); + + while (!s1.jePrazan() && !s2.jePrazan()) { + int broj = s1.skiniVrh(); + rez.stavi(broj); + broj = s2.skiniVrh(); + rez.stavi(broj); + } + + // ako su razlitite duzine stekovi, na jednom je nesto ostalo + while (!s1.jePrazan()) { + int broj = s1.skiniVrh(); + rez.stavi(broj); + } + while (!s2.jePrazan()) { + int broj = s2.skiniVrh(); + rez.stavi(broj); + } + return rez; + } + + public static void snimiUFajl(Stek s, String imef) { + while (!s.jePrazan()) { + int koef = s.skiniVrh(); + Svetovid.out(imef).println(koef); + } + Svetovid.out(imef).close(); + } + + public static void main(String[] args) { + Stek s1 = ucitajStek("p1.txt"); + Stek s2 = ucitajStek("p2.txt"); + + ukloniJednocifrene(s1); + ukloniNeparne(s2); + + Stek s3 = spoji(s1,s2); + + snimiUFajl(s3, "pp.txt"); + + } + +} diff --git a/kodovi/stek-i-red-opsluzivanja/p1.txt b/kodovi/stek-i-red-opsluzivanja/p1.txt new file mode 100644 index 0000000..64d28a6 --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/p1.txt @@ -0,0 +1 @@ +11 2 3 4 5 10 2 3 \ No newline at end of file diff --git a/kodovi/stek-i-red-opsluzivanja/p2.txt b/kodovi/stek-i-red-opsluzivanja/p2.txt new file mode 100644 index 0000000..50f7e77 --- /dev/null +++ b/kodovi/stek-i-red-opsluzivanja/p2.txt @@ -0,0 +1 @@ +6 9 11 12 7 1 \ No newline at end of file -- 2.25.1