Advertisement
NenadKocev

[Java] Патување

Oct 20th, 2017
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.82 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3.  
  4. //вашиот код
  5.  
  6. abstract class Patuvanje{
  7.     protected String ime;
  8.     protected int cena;
  9.     Patuvanje(){}
  10.     Patuvanje(String ime, int cena){
  11.         this.ime = ime;
  12.         this.cena = cena;
  13.     }
  14.     int getCena(){return cena;}
  15.     public abstract int vratiVremeVoDenovi();
  16.  
  17.     public static int vratiMinCena(Patuvanje [] niza, int n, Patuvanje zaSporedba){
  18.         int i = 0;
  19.         while(niza[i].vratiVremeVoDenovi() < zaSporedba.vratiVremeVoDenovi())
  20.             i++;
  21.         int min = niza[i].getCena();
  22.         boolean bu = false;
  23.         for(Patuvanje x: niza){
  24.             if(x.vratiVremeVoDenovi() > zaSporedba.vratiVremeVoDenovi()){
  25.                 bu = true;
  26.                 if(x.getCena() < min)
  27.                 min = x.getCena();
  28.             }
  29.         }
  30.         if(bu)
  31.         return min;
  32.         return 0;
  33.     }
  34. }
  35.  
  36. class PraznicnoPatuvanje extends Patuvanje{
  37.     private int prvDen;
  38.     private int prvMesec;
  39.     private int vtorDen;
  40.     private int vtorMesec;
  41.     PraznicnoPatuvanje(){}
  42.     //ime,cena,pocD,pocM, krajD,krajM
  43.     PraznicnoPatuvanje(String ime,int cena, int pocD, int pocM, int krajD, int krajM){
  44.         super(ime, cena);
  45.         try {
  46.             prvDen = pocD;
  47.             prvMesec = pocM;
  48.             vtorDen = krajD;
  49.             vtorMesec = krajM;
  50.             if(prvMesec > vtorMesec || (prvMesec == vtorMesec&&prvDen > vtorDen))
  51.                 throw new Exception("Iskluchok\n");
  52.         }
  53.         catch (Exception x){
  54.             System.out.print(x.getMessage());
  55.             prvDen = krajD;
  56.             prvMesec = krajM;
  57.             vtorMesec = pocM;
  58.             vtorDen = pocD;
  59.         }
  60.     }
  61.     String getIme(){return ime;}
  62.  
  63.     public int vratiVremeVoDenovi(){
  64.         int denovi = (vtorMesec*30 + vtorDen) - (prvMesec * 30 + prvDen);
  65.                 return denovi;
  66.     }
  67.     int getPrvMesec(){return prvMesec;}
  68.  
  69. }
  70.  
  71. class GodishenOdmor extends Patuvanje{
  72.     private int denovi;
  73.     //odishenOdmor(ime,cena,vreme);
  74.     GodishenOdmor(){}
  75.     GodishenOdmor(String ime, int cena, int vreme){
  76.         super(ime, cena-1000);
  77.         denovi = vreme;
  78.     }
  79.     public int vratiVremeVoDenovi(){return denovi;}
  80. }
  81.  
  82. public class Test {
  83.  
  84.  
  85.     public static void main(String[] args) {
  86.  
  87.  
  88.         int n;
  89.         Scanner in=new Scanner(System.in);
  90.         n=in.nextInt();
  91.  
  92.         Patuvanje nizaPatuvanje[]=new Patuvanje[n];
  93.  
  94.         for (int i=0;i<n;i++){
  95.             int tip=in.nextInt();
  96.             if (tip==0){
  97.                 String ime=in.next();
  98.                 int cena =in.nextInt();
  99.                 int vreme=in.nextInt();
  100.                 nizaPatuvanje[i]=new GodishenOdmor(ime,cena,vreme);
  101.             }
  102.             else {
  103.                 String ime=in.next();
  104.                 int cena =in.nextInt();
  105.                 int pocD=in.nextInt();
  106.                 int pocM=in.nextInt();
  107.                 int krajD=in.nextInt();
  108.                 int krajM=in.nextInt();
  109.                 nizaPatuvanje[i]=new PraznicnoPatuvanje(ime,cena,pocD,pocM, krajD,krajM);
  110.  
  111.             }
  112.         }
  113.  
  114.         //решение на барање 1
  115.         /*(Барање 1) На стандарден излез да ги отпечатите сите имиња на агенции кои нудат
  116.          празнични патувања кои почнуваат во месец Јуни т.е. 6тиот месец од годината (во
  117.           еден ред и одвоени со празно место).
  118.           */
  119.         for(Patuvanje x : nizaPatuvanje){
  120.             if(x instanceof PraznicnoPatuvanje && ((PraznicnoPatuvanje)x).getPrvMesec() == 6){
  121.                 System.out.print(((PraznicnoPatuvanje) x).getIme() + " ");
  122.             }
  123.         }
  124.         System.out.println();
  125.  
  126.  
  127.         //решение на барање 2
  128. //        (Барање 2) На стандарден излез да го отпечатите просечното
  129. //        времетраење на сите патувања изразено во денови.
  130.         int suma = 0;
  131.         for(Patuvanje x: nizaPatuvanje)
  132.             suma += x.vratiVremeVoDenovi();
  133.         System.out.println((double)((double)suma/n));
  134.  
  135.  
  136.         //решение на барање 3
  137. //        (Барање 3) Од стандарден влез да ги прочитате информациите за еден
  138. //        годишен одмор (ime, cena, vremetraenje) . Да се креира променлива
  139. //        odmor од тип GodishenOdmor која референцира објект од тип (GodishenOdmor)
  140. //        креиран со информациите од влезот.
  141.         String ime;
  142.         int cena;
  143.         int vreme;
  144.         ime = in.next();
  145.         cena = in.nextInt();
  146.         vreme = in.nextInt();
  147.         GodishenOdmor odmor = new GodishenOdmor(ime ,cena, vreme);
  148.  
  149.         //решение на барање 4
  150. //        (Барање 4) На стандарден излез отпечатете минимална цена на она патување меѓу оние патувања
  151. //        кои се подолги од вчитаниот годишен одмор (odmor) . Притоа за таа цел да се искористи метода
  152. //        со потпис int vratiMinCena(Patuvanje [] niza, int n, Patuvanje zaSporedba); Оваа метода е
  153. //        статичка во класата Patuvanje. Таа ја враќа минималната цена на патувањето од низата niza
  154. //        кое е подолго од патувањето zaSporedba . Ако нема такво патување функцијата треба да врати 0
  155.         System.out.print(Patuvanje.vratiMinCena(nizaPatuvanje, n, odmor));
  156.  
  157.  
  158.     }
  159.  
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement