![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Други колоквијум Друга група 29. 1. 2006 |
---|
Саставити на језику Java следећи пакет класа:
boolean
prikazi(double[]
niz)
. Вредност методе указује на то, да ли треба наставити генерисање низова за приказивање.
studentx
(x
је број радне станице за којим се ради). Лозинка на свакој радној станици је student
.N:
(Nastava
on
\\Xs200-2
) у каталогу ObjektnoProg\RSx
(x
је број радне станице за којим се ради).// Prikazivac.java package histogram; public interface Prikazivac { boolean prikazi (double[] niz); } // Uredjivac.java package histogram; public abstract class Uredjivac { protected Prikazivac prik; public Uredjivac (Prikazivac prik) { this.prik = prik; } public abstract void uredi (double[] niz); } // Izbor.java package histogram; public class Izbor extends Uredjivac { public Izbor (Prikazivac prik) { super (prik); } public void uredi (double[] niz) { int n = niz.length; radi: for (int i=0; i<n-1; i++) for (int j=i+1; j<n; j++) { if (niz[j] < niz[i]) { double p = niz[i]; niz[i] = niz[j]; niz[j] = p; if (prik != null) if (!prik.prikazi (niz)) break radi; } } } } // Umetanje.java package histogram; public class Umetanje extends Uredjivac { public Umetanje (Prikazivac prik) {super(prik);} public void uredi (double[] niz) { int n = niz.length; radi: for (int i=1; i<n; i++) { int j = i-1; while(j>=0 && niz[j]>niz[j+1]) { double p = niz[j]; niz[j] = niz[j+1]; niz[j+1] = p; if (prik != null) if (! prik.prikazi (niz)) break radi; j--; } } } } // Histogram.java package histogram; import java.awt.*; import java.awt.event.*; public class Histogram extends Frame implements Prikazivac, Runnable { private Uredjivac uredjivac = new Izbor (this); private Thread nit = null; private boolean dalje = false; private double[] niz = null; private TextField tksDuz = new TextField ("20", 4), tksMax = new TextField ("10", 4), tksDt = new TextField ("500", 4); private Checkbox rdgIzbor, rdgUmet; public boolean prikazi (double[] niz) { platno.repaint (); try { Thread.sleep (Integer.parseInt(tksDt.getText())); } catch (InterruptedException g) {} return dalje; } private class Platno extends Canvas { public void paint (Graphics g) { if (niz != null) { g.setColor (Color.BLACK); double max = niz[0]; int sir = getWidth (), vis = getHeight (); int n = niz.length; for (int i=1; i<n; i++) if (niz[i] > max) max = niz[i]; double ds = (double) sir / n, dv = (double)vis / max; for (int i=0; i<n; i++) { int x = (int) (i * ds); int v = (int) (niz[i] * dv); g.fillRect (x, vis-v, (int)ds-1, v); } } } } private Platno platno = new Platno (); public Histogram () { super ("Histogram"); setBounds (100, 100, 400, 300); addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent d) { dalje = false; dispose (); } }); add (platno, "Center"); platno.setBackground (new Color(240,240,240)); Panel ploca = new Panel (new GridLayout (0,1)); add (ploca, "South"); Panel plo = new Panel (); ploca.add (plo); plo.add (new Label ("duz:", Label.RIGHT)); plo.add (tksDuz); plo.add (new Label ("max:", Label.RIGHT)); plo.add (tksMax); plo.add (new Label ("dt:", Label.RIGHT)); plo.add (tksDt); ploca.add (plo = new Panel()); CheckboxGroup grp = new CheckboxGroup (); plo.add (rdgIzbor = new Checkbox ("Izbor", grp, true)); plo.add (rdgUmet = new Checkbox ("Umetanje", grp, false)); rdgIzbor.addItemListener (new ItemListener () { public void itemStateChanged (ItemEvent d) { uredjivac = new Izbor (Histogram.this); } }); rdgUmet.addItemListener (new ItemListener () { public void itemStateChanged (ItemEvent d) { uredjivac = new Umetanje (Histogram.this); } }); ploca.add (plo = new Panel()); Button dgm = new Button ("Radi"); plo.add (dgm); dgm.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent d) { if (nit != null) { dalje = false; try { nit.join (); } catch (InterruptedException g) {} } (nit = new Thread (Histogram.this)). start (); } }); plo.add(dgm = new Button ("Prekini")); dgm.addActionListener (new ActionListener () { public void actionPerformed (ActionEvent d) { dalje = false; } }); setVisible (true); } public void run () { int duz = Integer.parseInt (tksDuz.getText ()); double max = Double.parseDouble (tksMax.getText ()); niz = new double [duz]; for (int i=0; i<duz; niz[i++]=Math.random()*max); dalje = true; prikazi (niz); uredjivac.uredi (niz); } public static void main (String[] varg) { new Histogram (); } }(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.