![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Први колоквијум Прва група 1. 12. 2006 |
|---|
Написати на језику Java следећи пакет типова:
(x,y), где су x и y координате тачке.
Грешке пријављивати изузецима. У класама за изузетке предвидети састављање текста поруке.
Написати на језику Java интерактиван програм (са менијем) који читајући потребне податке с главног улаза:
На располагању стоји готова класа Citaj у безименом пакету која садржи заједничке методе за читање свих стандардних типова података (датотека \\Xs200-2\Nastava\ProgJava\Citaj.java).
ispitx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.N: (Nastava on \\Xs200-2) у каталогу ObjektnoProg\RSx (x је број радне станице за којим се ради).
// Tacka.java
package krive;
public class Tacka { double x, y;
public Tacka () {}
public Tacka (double xx, double yy) {x=xx; y=yy;}
public double x () { return x; }
public double y () { return y; }
}
// Kriva.java
package krive;
public abstract class Kriva {
protected abstract double x (double p);
protected abstract double y (double p);
public Tacka T ( double p) { return new Tacka (x(p), y(p)); }
}
// Spirala.java
package krive;
public class Spirala extends Kriva {
private double a, b;
public Spirala () { a = 1; }
public Spirala (double aa, double bb) { a = aa; b = bb; }
protected double x (double p) { return a * p * Math.cos (b+p); }
protected double y (double p) { return a * p * Math.sin (b+p); }
}
// Oscil.java
package krive;
public class Oscil extends Kriva {
private double a, b, c;
public Oscil () { a = b = 1; }
public Oscil (double aa, double bb, double cc) { a = aa; b = bb; c = cc;}
protected double x (double p) { return p; }
protected double y (double p) { return a * Math.sin (b*p+c); }
}
// GKrive.java
package krive;
public abstract class GKrive extends Exception {}
// GIndeks.java
package krive;
public class GIndeks extends GKrive {
public String toString () { return "*** Nedoszvoljen indeks!"; }
}
// GPuno.java
package krive;
public class GPuno extends GKrive {
public String toString () { return "*** Mesto je puno!"; }
}
// GPrazno.java
package krive;
public class GPrazno extends GKrive {
public String toString () { return "*** Mesto je prazno!"; }
}
// Zbirka.java
package krive;
public class Zbirka {
private Kriva[] niz;
private int n;
public Zbirka (int kap) { niz = new Kriva[kap]; }
public Zbirka () { this (10); }
public Zbirka stavi (Kriva k, int i) throws GIndeks, GPuno {
if (i<0 || i>=niz.length) throw new GIndeks ();
if (niz[i] != null) throw new GPuno ();
niz[i] = k;
return this;
}
public boolean parzno (int i) throws GIndeks {
if (i<0 || i>=niz.length) throw new GIndeks ();
return niz[i] == null;
}
public Zbirka izbaci (int i) throws GIndeks {
if (i<0 || i>=niz.length) throw new GIndeks ();
niz[i] = null;
return this;
}
public void tabeliraj (int i, double pMin, double pMax, double dP)
throws GIndeks, GPrazno {
if (i<0 || i>=niz.length) throw new GIndeks ();
if (niz[i] == null) throw new GPrazno ();
for (double p=pMin; p<=pMax; p+=dP) {
Tacka t = niz[i].T(p);
System.out.printf ("%7.2f (%.2f,%.2f)\n", p, t.x(), t.y());
}
}
}
// KriveT.java
import krive.*;
public class KriveT {
private static class GIzbor extends GKrive {
public String toString () { return "*** Nedozvoljen izbor!"; }
}
public static void main (String[] varg) {
Zbirka zbr = new Zbirka (5);
radi: while (true) {
try {
System.out.print ("(Stavi, Izbaci, Tabeliraj, Kraj)? ");
switch (Citaj.Char()) {
case 's': {
System.out.print ("Mesto? ");
int ind = Citaj.Int ();
Kriva k = null;
System.out.print("(Spirala, Oscil)? ");
switch (Citaj.Char()) {
case 's':
System.out.print ("a,b? ");
zbr.stavi (
new Spirala (Citaj.Double(), Citaj.Double()),
ind
);
break;
case 'o':
System.out.print ("a,b,c? ");
zbr.stavi (
new Oscil (Citaj.Double(), Citaj.Double(), Citaj.Double()),
ind
);
break;
default: throw new GIzbor ();
}
break;
} case 'i': {
System.out.print ("Mesto? ");
zbr.izbaci (Citaj.Int());
break;
} case 't': {
System.out.print ("Mesto? ");
int ind = Citaj.Int ();
System.out.print ("pmin,pmax,dp? ");
zbr.tabeliraj (ind, Citaj.Double(), Citaj.Double(), Citaj.Double());
break;
} case 'k': break radi;
default: throw new GIzbor ();
}
} catch (GKrive g) { System.out.println(g); }
}
}
}
(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.