![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Први колоквијум 1. 12. 2007 |
|---|
Написати на језику Java следећи пакет типова:
K'), сфера (запремина: 4r3π/3, ознака: 'S'), ваљак (запремина: r2πh, ознака: 'V') и правилна четворострана пирамида (запремина: a2h/3, ознака: 'P') су тела.
<чланак|…|чланак>.
Грешке пријављивати изузецима. У класама за изузетке предвидети састављање текста поруке.
Написати на језику Java интерактиван програм (с менијем) који читајући потребне податке с главног улаза:
На располагању стоји готова класа Citaj у безименом пакету која садржи заједничке методе за читање свих стандардних типова података (датотека \\Xs200-2\Nastava\ProgJava\Citaj.java).
ispitx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.N: (Nastava on \\Xs200-2) у каталогу ObjektnoProg\RSx (x је број радне станице за којим се ради).
// Telo.java
package tela;
public interface Telo {
boolean jednako (Telo t);
double zapremina ();
String toString ();
}
// Sfera.java
package tela;
public class Sfera implements Telo {
private double r;
public Sfera (double rr) { r = rr; }
public Sfera () { r = 1; }
public boolean jednako (Telo t) { return t instanceof Sfera && r==((Sfera)t).r; }
public double zapremina () { return 4 * r*r*r *Math.PI / 3; }
public String toString () { return "S(" + r + ")"; }
}
// Valjak.java
package tela;
public class Valjak implements Telo {
private double r, h;
public Valjak (double rr, double hh) { r = rr; h = hh; }
public Valjak () { r = h = 1; }
public boolean jednako (Telo t) {
return t instanceof Valjak && r == ((Valjak)t).r && h == ((Valjak)t).h;
}
public double zapremina () { return r*r*Math.PI*h; }
public String toString () { return "V(" + r + "," + h + ")"; }
}
// Kupa.java
package tela;
public class Kupa implements Telo {
private double r, h;
public Kupa (double rr, double hh) { r=rr; h=hh; }
public Kupa () { r = h = 1; }
public boolean jednako (Telo t) {
return t instanceof Kupa && r == ((Kupa)t).r && h == ((Kupa)t).h;
}
public double zapremina () { return r * r * Math.PI * h / 3; }
public String toString () { return "K(" + r + "," + h + ")"; }
}
// Piramida.java
package tela;
public class Piramida implements Telo {
private double a, h;
public Piramida (double aa, double hh) { a = aa; h = hh; }
public Piramida () { a = h = 1; }
public boolean jednako (Telo t) {
return t instanceof Piramida && a == ((Piramida)t).a && h == ((Piramida)t).h;
}
public double zapremina () { return a * a * h / 3;}
public String toString () { return "P(" + a + "," + h + ")"; }
}
// GNeOdgovara.java
package tela;
public class GNeOdgovara extends Exception {
public String toString () { return "*** Neodgovarjuca vrsta tela!"; }
}
// Glista.h
package tela;
public class Glista {
private class Clanak {
Telo telo; Clanak sled;
Clanak (Telo t) {
telo = t;
if (prvi == null) prvi = this; else posl.sled = this;
posl = this;
}
}
private Clanak prvi, posl;
public Glista dodaj (Telo t) throws GNeOdgovara {
if (prvi==null && !(t instanceof Kupa) ||
prvi!=null && (
!(posl.telo instanceof Sfera) && !(t instanceof Sfera ) ||
(posl.telo instanceof Sfera) && !(t instanceof Valjak)
)
) throw new GNeOdgovara ();
new Clanak (t);
return this;
}
public double zapremina () {
double v = 0;
for (Clanak tek=prvi; tek!=null; tek=tek.sled) v += tek.telo.zapremina ();
return v;
}
public String toString () {
StringBuffer s = new StringBuffer ("G<");
for(Clanak tek=prvi; tek!=null; tek=tek.sled){
s.append (tek.telo);
if (tek.sled != null) s.append ('|');
}
return s.append ('>').toString ();
}
}
// Test.java
import tela.*;
public class Test {
private static class Greska extends Exception {
private String poruka;
public Greska (String p) {poruka = "*** " + p;}
public String toString () { return poruka; }
}
private static Telo citaj () throws Greska {
System.out.print ("Vrsta (K,S,V,P)? ");
switch (Citaj.Char ()) {
case 'K': case 'k':
System.out.print ("r,h? ");
return new Kupa (Citaj.Double(), Citaj.Double());
case 'S': case 's':
System.out.print ("r? ");
return new Sfera (Citaj.Double());
case 'V': case 'v':
System.out.print ("r,h? ");
return new Valjak (Citaj.Double(), Citaj.Double());
case 'P': case 'p':
System.out.print ("a,h? ");
return new Piramida(Citaj.Double(), Citaj.Double());
default:
throw new Greska ("Nepoznata vrsta tela!");
}
}
public static void main (String[] varg) {
Glista gl = new Glista ();
radi: while (true) {
try {
System.out.print (
"\n1. Nova glista\n" +
"2. Dodaj clanak\n" +
"3. Ispisi glistu\n" +
"4. Ispisi zapreminu\n" +
"0. Kraj rada\n" +
"Vas izbor? "
);
switch (Citaj.Char ()) {
case '1': gl = new Glista (); break;
case '2': gl.dodaj (citaj ()); break;
case '3': System.out.println (gl); break;
case '4': System.out.println ("V=" + gl.zapremina());break;
case '0': break radi;
default: throw new Greska ("Nedozvoljen izbor!");
}
} catch (Exception g) { System.out.println(g); }
}
}
}
(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.