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