import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class BladCzytaniaZKlawiaturyLiczbyCalkowitej extends NumberFormatException { private static final long serialVersionUID = 1L; public BladCzytaniaZKlawiaturyLiczbyCalkowitej(String message) { super(message); } } class Klawiatura { public static String name = "Wczyta³em liczbe: "; public static String czytajZnaki() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); return br.readLine(); } public Integer czytajLiczbeCalkowita() throws BladCzytaniaZKlawiaturyLiczbyCalkowitej { String znaki = null; try { if ((znaki = czytajZnaki()) != null) { return Integer.valueOf(znaki); } } catch (NumberFormatException e) { throw new BladCzytaniaZKlawiaturyLiczbyCalkowitej("Podana ciag znaków nie jest liczba ca³kowita."); } catch (IOException e) { e.printStackTrace(); } return null; } } abstract class Figura { protected int liczba_bokow; protected int[] boki; protected String nazwa_figury; protected String jednostki; protected float[] boki2; public Figura(String nazwa_figury, String jednostki, int... boki) { this.nazwa_figury = nazwa_figury; this.jednostki = jednostki; this.boki = boki; } public Figura(String nazwa_figury, String jednostki, float... boki) { this.nazwa_figury = nazwa_figury; this.jednostki = jednostki; this.boki2 = boki2; } public abstract double getPole(); public abstract double getObwod(); public void wypiszPole() { System.out.print("Pole "+nazwa_figury+" (o bokach ["); for (int i = 0; i < boki.length-1; i++) { System.out.print(boki[i]+", "); } if (boki.length-1>=0) System.out.print(boki[boki.length-1]); System.out.println("]) = "+getPole()+" "+jednostki+"^2"); } public void wypiszObwod() { System.out.print("Obwod "+nazwa_figury+" (o bokach ["); for (int i = 0; i < boki.length-1; i++) { System.out.print(boki[i]+", "); } if (boki.length-1>=0) System.out.print(boki[boki.length-1]); System.out.println("]) = "+getObwod()+" "+jednostki); } } class Prostokat extends Figura { public Prostokat(String jednostki, int... bok) { super("Prostokat", jednostki, bok); } public double getObwod() { if(boki!=null) return boki[0]*boki[1]; else if(boki2!=null) return boki2[0]*boki2[1]; else return 0; } public double getPole() { if(boki!=null) return 2*(boki[0]+boki[1]); else if(boki2!=null) return 2*(boki2[0]+boki2[1]); else return 0; } } class Kolo extends Figura { public Kolo(String jednostki, int... boki) { super("Ko³o", jednostki, boki); } public void wypiszPole() { System.out.print("Pole "+nazwa_figury+" (o promieniu r ="+boki[0]+" "+jednostki+")"); System.out.println(" = "+getPole()+" "+jednostki+"^2"); } public void wypiszObwod() { System.out.print("Obwod "+nazwa_figury+" (o promieniu r -"+boki[0]+" "+jednostki+")"); System.out.println(" = "+getObwod()+" "+jednostki); } public double getObwod() { if(boki!=null) return 2*Math.PI*boki[0]; else if(boki2!=null) return 2*Math.PI*boki2[0]; else return 0; } public double getPole() { if(boki!=null) return boki[0]*boki[0]*Math.PI; else if(boki2!=null) return boki2[0]*boki2[0]*Math.PI; else return 0; } } class Trojkat extends Figura { public Trojkat(String jednostki, int... bok) { super("Trojkat", jednostki, bok); } public void wypiszPole() { System.out.print("Pole "+nazwa_figury+" (o wysokosci h ="+boki[1]+" "+jednostki+")"); System.out.println(" = "+getPole()+" "+jednostki+"^2"); } public void wypiszObwod() { System.out.print("Obwod "+nazwa_figury+" (o wysokosci h ="+boki[1]+" "+jednostki+")"); System.out.println(" = "+getObwod()+" "+jednostki); } public double getObwod(){ if(boki!=null) return boki[0]+boki[1]+ boki[2]; else if(boki2!=null) return boki2[0]+boki2[1]+ boki2[2]; else return 0; } public double getPole() { if(boki!=null) return 0.5*boki[0]*boki[1]; else if(boki2!=null) return 0.5*boki2[0]*boki2[1]; else return 0; } } class Trapez extends Figura { public Trapez(String jednostki, int... bok) { super("Trapez", jednostki, bok); } public void wypiszPole() { System.out.print("Pole "+nazwa_figury+" (o wysokosci h ="+boki[4]+" "+jednostki+")"); System.out.println(" = "+getPole()+" "+jednostki+"^2"); } public void wypiszObwod() { System.out.print("Obwod "+nazwa_figury+" (o wysokosci h ="+boki[4]+" "+jednostki+")"); System.out.println(" = "+getObwod()+" "+jednostki); } public double getObwod(){ if(boki!=null) return boki[0]+boki[1]+ boki[2]+boki[3]; else if(boki2!=null) return boki2[0]+boki2[1]+ boki2[2]+boki2[3]; else return 0; } public double getPole() { if(boki!=null) return 0.5*(boki[0]+boki[1])*boki[4]; else if(boki2!=null) return 0.5*(boki2[0]+boki2[1])*boki2[4]; else return 0; } } class Romb extends Figura { public Romb(String jednostki, int... bok) { super("Romb", jednostki, bok); } public void wypiszPole() { System.out.print("Pole "+nazwa_figury+" (o przekatnych p q ="+boki[1]+" "+jednostki+" "+boki[2]+" "+jednostki+")"); System.out.println(" = "+getPole()+" "+jednostki+"^2"); } public void wypiszObwod() { System.out.print("Pole "+nazwa_figury+" (o przekatnych p q ="+boki[1]+" "+jednostki+" "+boki[2]+" "+jednostki+")"); System.out.println(" = "+getObwod()+" "+jednostki); } public double getObwod(){ if(boki!=null) return 4*boki[0]; else if(boki2!=null) return 4*boki2[0]; else return 0; } public double getPole() { if(boki!=null) return 0.5*boki[1]*boki[2]; else if(boki2!=null) return 0.5*boki2[1]*boki2[2]; else return 0; } } public class FiguryGeometryczne { public static void main(String[] args) { Klawiatura klawiatura = new Klawiatura(); Figura[] figury = new Figura[5]; System.out.println("Podaj promien ko³a:"); Integer r=klawiatura.czytajLiczbeCalkowita(); figury[0] = new Kolo("cm", 10); System.out.println("Podaj bok prostokata:"); Integer a=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 2. bok prostokata:"); Integer b=klawiatura.czytajLiczbeCalkowita(); figury[1] = new Prostokat("cm", a, b); System.out.println("Podaj bok trojkata prostokatnego:"); Integer c=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 2. bok trojkata prostokatnego:"); Integer d=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj wysokosc trojkata prostokatnego:"); Integer h=klawiatura.czytajLiczbeCalkowita(); figury[2] = new Trojkat ("cm", c, d, h); System.out.println("Podaj podstawe trapezu:"); Integer f=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 2. podstawe trapezu:"); Integer g=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj wysokosc trapezu:"); Integer j=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 3. bok trapezu:"); Integer x=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 4. bok trapezu:"); Integer y=klawiatura.czytajLiczbeCalkowita(); figury[3] = new Trapez ("cm", f, g, j, x, y); System.out.println("Podaj bok rombu:"); Integer k=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj przekatna rombu:"); Integer p=klawiatura.czytajLiczbeCalkowita(); System.out.println("Podaj 2. przekatna rombu:"); Integer q=klawiatura.czytajLiczbeCalkowita(); figury[4] = new Romb ("cm", k, p, q); for (int i = 0; i < figury.length; i++) { figury[i].wypiszObwod(); figury[i].wypiszPole(); } } }
niewmar