![]() Ласло Краус |
Програмирање на језику 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.