Pastebin launched a little side project called HostCabi.net, check it out ;-)Don't like ads? PRO users don't see any ads ;-)
Guest

лв_1

By: moni_qwerty on Feb 19th, 2012  |  syntax: Java  |  size: 10.10 KB  |  hits: 114  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. package lab5;
  2.  
  3. import java.util.Scanner;
  4.  
  5.  
  6. class PaketPijalok implements ImaMasa {
  7.  
  8.     double volumenEden;
  9.     int kolicina;
  10.     static double gustina = 0.8;
  11.     static double ambalaza = 0.2;
  12.  
  13.     public PaketPijalok(double volumenEden, int kolicina) {
  14.         super();
  15.         this.volumenEden = volumenEden;
  16.         this.kolicina = kolicina;
  17.     }
  18.  
  19.     @Override
  20.     public double vratiMasa() {
  21.         return (volumenEden * gustina) * kolicina;
  22.     }
  23.  
  24.     @Override
  25.     public int sporediMasa(ImaMasa a) {
  26.         if (this.vratiMasa() > a.vratiMasa()) {
  27.             return 1;
  28.         } else if (this.vratiMasa() < a.vratiMasa()) {
  29.             return 0;
  30.         }
  31.         return -1;
  32.     }
  33.  
  34.     @Override
  35.     public PaketPijalok clone(){
  36.         PaketPijalok pp = new PaketPijalok(this.volumenEden, this.kolicina);
  37.         return pp;
  38.     }
  39.    
  40.  
  41.     public void pecati() {
  42.         if (this instanceof PaketSok) {
  43.             System.out.print("Kolicina: " + kolicina + " so po " + gustina + " l(dm3)");
  44.         } else {
  45.             System.out.printf("Kolicina: %d %.01f%% alkohol od po %.01f l(dm3)", kolicina, (((PaketVino) this).getProcentAlkohol() * 100), (gustina - 0.2));
  46.         }
  47.         //PaketVino Kolicina: 12 12.0% alkohol od po 0.6 l(dm3) (gustina-0.2)
  48.     }
  49. }
  50.  
  51. class Kamion implements Cloneable {
  52.  
  53.     Registracija registracija;
  54.     String vozac;
  55.     ImaMasa paketi[];
  56.  
  57.     public Kamion(Registracija registracija, String vozac, ImaMasa[] paketi) {
  58.         this.registracija = registracija;
  59.         this.vozac = vozac;
  60.         this.paketi = paketi;
  61.     }
  62.  
  63.     public Kamion(Registracija registracija, String vozac) {
  64.         paketi = null;
  65.         this.registracija = registracija;
  66.         this.vozac = vozac;
  67.         paketi = new ImaMasa[0];
  68.     }
  69.  
  70.     public void dodadiElement(ImaMasa a) {
  71.         ImaMasa tmp[] = new ImaMasa[paketi.length + 1];
  72.         System.arraycopy(paketi, 0, tmp, 0, paketi.length);
  73.         tmp[paketi.length] = a;
  74.         paketi = tmp;
  75.     }
  76.  
  77.     public double vratiVkupnaMasa() {
  78.         double vkupno = 0;
  79.         for (ImaMasa i : paketi) {
  80.             vkupno += i.vratiMasa();
  81.         }
  82.         return vkupno;
  83.     }
  84.  
  85.     public void pecati() {
  86.         System.out.println("Registracija: " + registracija + " Ime: " + vozac);
  87.         for (ImaMasa i : paketi) {
  88.            
  89.             if (i instanceof Topka) {
  90.                 ((Topka) i).pecati();
  91.             } else
  92.            
  93.             {
  94.                 ((PaketPijalok) i).pecati();
  95.             }
  96.             System.out.println();
  97.         }
  98.     }
  99.  
  100.     public int vratiBrojElementSoPogolemaMasa(int m) {
  101.         int br = 0;
  102.         for (ImaMasa i : paketi) {
  103.             if (i.vratiMasa() > m) {
  104.                 br++;
  105.             }
  106.         }
  107.         return br;
  108.     }
  109.  
  110.     public Topka izvadiTopkaSoNajgolemaMasa() {
  111.         boolean f = true;
  112.         int max = -1;
  113.        
  114.         for (int i = 0; i < paketi.length; i++) {
  115.             if (f && paketi[i] instanceof Topka) {
  116.                 max = i;
  117.                 f = false;
  118.             } else if (paketi[i] instanceof Topka && paketi[i].vratiMasa() > paketi[max].vratiMasa()) {
  119.                 max = i;
  120.             }
  121.         }
  122.         if (f) {
  123.             return null;
  124.         }
  125.         ImaMasa pom[] = new ImaMasa[paketi.length - 1];
  126.         System.arraycopy(paketi, 0, pom, 0, (max));
  127.         System.arraycopy(paketi, (max + 1), pom, max, paketi.length - max - 1);
  128.         Topka t = (Topka) paketi[max];
  129.         paketi = pom;
  130.         return t;
  131.     }
  132.  
  133.     @Override
  134.     protected Kamion clone() throws CloneNotSupportedException {
  135.         try {
  136.             //Kamion cloned = new Kamion(this.registracija, this.vozac, this.paketi);
  137.             Kamion cloned = (Kamion) super.clone();
  138.             cloned.registracija = this.registracija;
  139.             cloned.vozac = this.vozac;
  140.             cloned.paketi = paketi.clone();
  141.             return cloned;
  142.         } catch (CloneNotSupportedException e) {
  143.             System.out.println(e);
  144.             return null;
  145.         }
  146.     }
  147.  
  148.     public Kamion pretovar(Registracija reg, String voz) throws CloneNotSupportedException {
  149.         Kamion nov = (Kamion) this.clone();
  150.         nov.registracija = reg;
  151.         nov.vozac = voz;
  152.         nov.izvadiTopkaSoNajgolemaMasa();
  153.         return nov;
  154.     }
  155. }
  156.  
  157. interface ImaMasa{
  158.  
  159.     public double vratiMasa();
  160.  
  161.     public int sporediMasa(ImaMasa a);
  162.     public ImaMasa clone();
  163. }
  164.  
  165. class Topka implements ImaMasa {
  166.  
  167.     double radius, gustina;
  168.  
  169.     public Topka(double radius, double gustina) {
  170.         super();
  171.         this.radius = radius;
  172.         this.gustina = gustina;
  173.     }
  174.  
  175.     @Override
  176.     public double vratiMasa() {
  177.         return ((4 / 3) * 3.14 * radius * radius * radius);
  178.     }
  179.  
  180.    
  181.  
  182.     public void pecati() {
  183.         System.out.print("Topka " + "Radius: " + radius + " Gustina: " + gustina + "kg(dm3)");
  184.     }
  185.  
  186.     public double getRadius() {
  187.         return radius;
  188.     }
  189.  
  190.     public double getGustina() {
  191.         return gustina;
  192.     }
  193.     @Override
  194.     public int sporediMasa(ImaMasa a) {
  195.         if (this.vratiMasa() > a.vratiMasa()) {
  196.             return 1;
  197.         } else if (this.vratiMasa() < a.vratiMasa()) {
  198.             return 0;
  199.         }
  200.         return -1;
  201.     }
  202.     @Override
  203.     public Topka clone(){
  204.         Topka pp = new Topka(this.radius, this.gustina);
  205.         return pp;
  206.     }
  207. }
  208.  
  209. class Registracija {
  210.  
  211.     String mesto;
  212.     int broj;
  213.     String zbor;
  214.  
  215.     public Registracija(String mesto, int broj, String zbor) {
  216.         super();
  217.         this.mesto = mesto;
  218.         this.broj = broj;
  219.         this.zbor = zbor;
  220.     }
  221.  
  222.     @Override
  223.     public String toString() {
  224.         return mesto + " " + broj + " " + zbor;
  225.     }
  226.  
  227.     public String getMesto() {
  228.         return mesto;
  229.     }
  230.  
  231.     public void setMesto(String mesto) {
  232.         this.mesto = mesto;
  233.     }
  234.  
  235.     public int getBroj() {
  236.         return broj;
  237.     }
  238.  
  239.     public void setBroj(int broj) {
  240.         this.broj = broj;
  241.     }
  242.  
  243.     public String getZbor() {
  244.         return zbor;
  245.     }
  246.  
  247.     public void setZbor(String zbor) {
  248.         this.zbor = zbor;
  249.     }
  250. }
  251.  
  252. class PaketVino extends PaketPijalok {
  253.  
  254.     double procentAlkohol;
  255.    
  256.     public double getProcentAlkohol() {
  257.         return procentAlkohol;
  258.     }
  259.     public PaketVino(double volumenEden, int kolicina, double procentAlkohol) {
  260.         super(volumenEden, kolicina);
  261.         this.procentAlkohol = procentAlkohol;
  262.     }
  263.  
  264.     @Override
  265.     public double vratiMasa() {
  266.         return super.vratiMasa() * (0.9 + procentAlkohol);
  267.     }
  268.  
  269.    
  270.  
  271.     @Override
  272.     public void pecati() {
  273.         System.out.print("PaketVino ");
  274.         super.pecati();
  275.     }
  276. }
  277.  
  278. class PaketSok extends PaketPijalok {
  279.  
  280.     Boolean daliGaziran;
  281.  
  282.     public PaketSok(double volumenEden, int kolicina, Boolean daliGaziran) {
  283.         super(volumenEden, kolicina);
  284.         this.daliGaziran = daliGaziran;
  285.     }
  286.     @Override
  287.     public void pecati() {
  288.         System.out.print("PaketSok ");
  289.         super.pecati();
  290.     }
  291.     @Override
  292.     public double vratiMasa() {
  293.         return super.vratiMasa() + (daliGaziran ? 0 : 0.1);
  294.     }
  295.  
  296.    
  297. }
  298.  
  299. public class Lab5 {
  300.  
  301.    
  302.     public static void main(String[] args) throws Exception {
  303.  
  304.         Scanner input = new Scanner(System.in);
  305.  
  306.         String r1Mesto = input.next();
  307.         int r1Broj = input.nextInt();
  308.         String r1Zbor = input.next();
  309.  
  310.         Registracija reg = new Registracija(r1Mesto, r1Broj, r1Zbor);
  311.  
  312.         String k1Vozac = input.next();
  313.         k1Vozac += " ";
  314.         k1Vozac += input.next();
  315.  
  316.         Kamion A = new Kamion(reg, k1Vozac);
  317.  
  318.         String pom = input.next();
  319.         double r1 = Double.parseDouble(pom);
  320.         String pom1 = input.next();
  321.         double g1 = Double.parseDouble(pom1);
  322.  
  323.         Topka t = new Topka(r1, g1);
  324.  
  325.         String pom2 = input.next();
  326.         double v1 = Double.parseDouble(pom2);
  327.         int k1 = input.nextInt();
  328.         boolean gaziran1 = input.nextBoolean();
  329.  
  330.         PaketSok ps = new PaketSok(v1, k1, gaziran1);
  331.  
  332.         String pom3 = input.next();
  333.         double r2 = Double.parseDouble(pom3);
  334.         String pom4 = input.next();
  335.         double g2 = Double.parseDouble(pom4);
  336.  
  337.         Topka t1 = new Topka(r2, g2);
  338.  
  339.         String pom5 = input.next();
  340.         double v2 = Double.parseDouble(pom5);
  341.         int k2 = input.nextInt();
  342.         String pom6 = input.next();
  343.         double alkohol1 = Double.parseDouble(pom6);
  344.  
  345.         PaketVino pv = new PaketVino(v2, k2, alkohol1);
  346.  
  347.         String pom7 = input.next();
  348.         double r3 = Double.parseDouble(pom7);
  349.         String pom8 = input.next();
  350.         double g3 = Double.parseDouble(pom8);
  351.  
  352.         Topka t2 = new Topka(r3, g3);
  353.  
  354.         String pom9 = input.next();
  355.         double v3 = Double.parseDouble(pom9);
  356.         String pom10 = input.next();
  357.         int k3 = Integer.parseInt(pom10);
  358.         String pom11 = input.next();
  359.         double alkohol2 = Double.parseDouble(pom11);
  360.  
  361.         PaketVino pv1 = new PaketVino(v3, k3, alkohol2);
  362.  
  363.         A.dodadiElement(t);
  364.         A.dodadiElement(ps);
  365.         A.dodadiElement(t1);
  366.         A.dodadiElement(pv);
  367.         A.dodadiElement(t2);
  368.         A.dodadiElement(pv1);
  369.  
  370.         System.out.println(A.vratiVkupnaMasa());
  371.         System.out.println(A.vratiBrojElementSoPogolemaMasa(10));
  372.  
  373.  
  374.         String r2Mesto = input.next();
  375.         int r2Broj = input.nextInt();
  376.         String r2Zbor = input.next();
  377.  
  378.         String k2Vozac = input.next();
  379.         k2Vozac += " ";
  380.         k2Vozac += input.next();
  381.  
  382.         try {
  383.             Kamion B = A.clone();
  384.             Registracija reg1 = new Registracija(r2Mesto, r2Broj, r2Zbor);
  385.             B.pretovar(reg1, k2Vozac);
  386.             A.pecati();
  387.             B.pecati();
  388.             System.out.println(A.vratiVkupnaMasa());
  389.             System.out.println(B.vratiVkupnaMasa());
  390.             System.out.println(A.vratiVkupnaMasa() - B.vratiVkupnaMasa());
  391.         } catch (CloneNotSupportedException e) {
  392.             e.printStackTrace();
  393.         }
  394.  
  395.     }
  396. }