![]() Ласло Краус |
Објекнто програмирање 2 - колоквијуми Први колоквијум 28. 11. 2009 |
---|
Написати на језику Java следећи пакет типова:
(
a,
b)
.
Написати на језику Java програм који направи једну кутију и једну таблу, напуни кутију за фиксно одабрани параметар n (не треба га учитавати с главног улаза), испише кутију на главном излазу, узима домине из кутије и ставља их на таблу све док може и испише на главном излазу завршни садржај табле, узету домину која није могла да се стави на таблу и завршни садржај кутије.
ispitx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.I:
(Nastava on \\Xs200-2
).
// Domina.java package igra; public class Domina { private int a, b; public Domina( int p, int q) { a = p; b = q; } public int a () { return a; } public int b () { return b; } public boolean ista( Domina d) { return a==d.a && b==d.b || b==d.a && a==d.b; } public Domina okreni() { int c = a; a = b; b = c; return this; } public String toString() { return "(" + a + "," + b + ")"; } } // GNeMoze.java package igra; public class GNeMoze extends Exception { public String toString() { return "*** Ne moze da se doda!"; } } // Skup.java package igra; public abstract class Skup { protected Elem prvi, posl; protected static class Elem { Domina dom; Elem sled; Elem (Domina d, Elem s) { dom = d; sled = s; } } public abstract Skup dodaj (Domina d) throws GNeMoze; public boolean ima( Domina d) { for (Elem tek=prvi; tek!=null; tek=tek.sled) if (d.ista (tek.dom)) return true; return false; } public String toString() { String s = ""; for (Elem tek=prvi; tek!=null; tek=tek.sled) s += tek.dom; return s; } } // Kutija.java package igra; public class Kutija extends Skup { public Kutija dodaj( Domina d) throws GNeMoze { if (ima (d)) throw new GNeMoze(); Elem novi = new Elem( d, null); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; return this; } public Kutija napuni( int n) { prvi = posl = null; int m = n * (n+1) / 2; for (int i=0; i<m;) try { dodaj( new Domina((int)(Math.random()*n), (int)(Math.random()*n))); i++; } catch (GNeMoze g) {} return this; } public Domina uzmi() throws GNeMoze { if (prvi == null) throw new GNeMoze();; Domina d = prvi.dom; if ((prvi = prvi.sled) == null) posl = null; return d; } } // Tabla.java package igra; public class Tabla extends Skup { public Tabla dodaj( Domina d) throws GNeMoze { if (ima (d)) throw new GNeMoze(); if (prvi==null || d.b()==prvi.dom.a()) naPocetak (d); else if (d.a() == posl.dom.b()) naKraj (d); else { d.okreni (); if (d.b() == prvi.dom.a()) naPocetak (d); else if (d.a() == posl.dom.b()) naKraj (d); else throw new GNeMoze(); } return this; } private void naPocetak (Domina d) { prvi = new Elem (d, prvi); if (posl == null) posl = prvi; } private void naKraj (Domina d) { Elem novi = new Elem (d, null); if (prvi == null) prvi = novi; else posl.sled = novi; posl = novi; } } // Test.java import igra.*; public class Test { public static void main (String[] varg) { int n = 4; Kutija k = new Kutija (); k.napuni (n); System.out.println ("Kutija: " + k); Tabla t = new Tabla (); Domina d = null; try { while (true) t.dodaj( d=k.uzmi()); } catch (GNeMoze g) {} System.out.println ("Tabla: " + t); System.out.println ("Domina: " + d); System.out.println ("Kutija: " + k); } }(садржај)
Kutija: (2,3)(2,1)(0,3)(2,0)(1,1)(1,3)(3,3)(1,0)(2,2)(0,0) Tabla: (3,3)(3,1)(1,1)(1,2)(2,3)(3,0)(0,2) Domina: (0,1) Kutija: (2,2)(0,0)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.