Advertisement
JStefan

APS_LAB4_Task3

Nov 1st, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.96 KB | None | 0 0
  1. import java.util.NoSuchElementException;
  2. import java.util.Scanner;
  3.  
  4. interface Queue<E> {
  5.  
  6.     // Elementi na redicata se objekti od proizvolen tip.
  7.  
  8.     // Metodi za pristap:
  9.  
  10.     public boolean isEmpty ();
  11.     // Vrakja true ako i samo ako redicata e prazena.
  12.  
  13.     public int size ();
  14.     // Ja vrakja dolzinata na redicata.
  15.  
  16.     public E peek ();
  17.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  18.  
  19.     // Metodi za transformacija:
  20.  
  21.     public void clear ();
  22.     // Ja prazni redicata.
  23.  
  24.     public void enqueue (E x);
  25.     // Go dodava x na kraj od redicata.
  26.  
  27.     public E dequeue ();
  28.     // Go otstranuva i vrakja pochetniot element na redicata.
  29.  
  30. }
  31.  
  32. class ArrayQueue<E> implements Queue<E> {
  33.  
  34.     // Redicata e pretstavena na sledniot nacin:
  35.     // length go sodrzi brojot na elementi.
  36.     // Ako length > 0, togash elementite na redicata se zachuvani vo elems[front...rear-1]
  37.     // Ako rear > front, togash vo  elems[front...maxlength-1] i elems[0...rear-1]
  38.     E[] elems;
  39.     int length, front, rear;
  40.  
  41.     // Konstruktor ...
  42.  
  43.     @SuppressWarnings("unchecked")
  44.     public ArrayQueue (int maxlength) {
  45.         elems = (E[]) new Object[maxlength];
  46.         clear();
  47.     }
  48.  
  49.     public boolean isEmpty () {
  50.         // Vrakja true ako i samo ako redicata e prazena.
  51.         return (length == 0);
  52.     }
  53.  
  54.     public int size () {
  55.         // Ja vrakja dolzinata na redicata.
  56.         return length;
  57.     }
  58.  
  59.     public E peek () {
  60.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  61.         if (length > 0)
  62.             return elems[front];
  63.         else
  64.             throw new NoSuchElementException();
  65.     }
  66.  
  67.     public void clear () {
  68.         // Ja prazni redicata.
  69.         length = 0;
  70.         front = rear = 0;  // arbitrary
  71.     }
  72.  
  73.     public void enqueue (E x) {
  74.         // Go dodava x na kraj od redicata.
  75.         elems[rear++] = x;
  76.         if (rear == elems.length)  rear = 0;
  77.         length++;
  78.     }
  79.  
  80.     public E dequeue () {
  81.         // Go otstranuva i vrakja pochetniot element na redicata.
  82.         if (length > 0) {
  83.             E frontmost = elems[front];
  84.             elems[front++] = null;
  85.             if (front == elems.length)  front = 0;
  86.             length--;
  87.             return frontmost;
  88.         } else
  89.             throw new NoSuchElementException();
  90.     }
  91. }
  92.  
  93. class Gragjanin {
  94.     private String imePrezime;
  95.     private int lKarta;
  96.     private int pasosh;
  97.     private int vozacka;
  98.  
  99.     public Gragjanin(String imePrezime, int lKarta, int pasosh, int vozacka) {
  100.         this.imePrezime = imePrezime;
  101.         this.lKarta = lKarta;
  102.         this.pasosh = pasosh;
  103.         this.vozacka = vozacka;
  104.     }
  105.  
  106.     public String getImePrezime() {
  107.         return imePrezime;
  108.     }
  109.  
  110.     public int getlKarta() {
  111.         return lKarta;
  112.     }
  113.  
  114.     public int getPasosh() {
  115.         return pasosh;
  116.     }
  117.  
  118.     public int getVozacka() {
  119.         return vozacka;
  120.     }
  121. }
  122.  
  123. public class MVR {
  124.     public static void main(String[] args) {
  125.  
  126.         Scanner br = new Scanner(System.in);
  127.  
  128.         int N = Integer.parseInt(br.nextLine());
  129.  
  130.         ArrayQueue<Gragjanin> firstQueue = new ArrayQueue<>(N); // red za lichna karta
  131.         ArrayQueue<Gragjanin> secondQueue = new ArrayQueue<>(N); // red za pasosh
  132.         ArrayQueue<Gragjanin> thirdQueue = new ArrayQueue<>(N); // red za vozachka
  133.  
  134.         for(int i=1;i<=N;i++){
  135.             String imePrezime = br.nextLine();
  136.             int lKarta = Integer.parseInt(br.nextLine());
  137.             int pasos = Integer.parseInt(br.nextLine());
  138.             int vozacka = Integer.parseInt(br.nextLine());
  139.             Gragjanin covek = new Gragjanin(imePrezime,lKarta,pasos,vozacka);
  140.             if(lKarta == 1) firstQueue.enqueue(covek);
  141.             if(pasos == 1 && lKarta == 0) secondQueue.enqueue(covek);
  142.             if(vozacka == 1 && pasos == 0 && lKarta == 0) thirdQueue.enqueue(covek);
  143.         }
  144.  
  145.         while(!firstQueue.isEmpty()) {
  146.             Gragjanin covek = firstQueue.dequeue();
  147.             if(covek.getPasosh() == 1) secondQueue.enqueue(covek);
  148.             else if(covek.getVozacka() == 1) thirdQueue.enqueue(covek);
  149.             else System.out.println(covek.getImePrezime());
  150.         }
  151.  
  152.         while(!secondQueue.isEmpty()) {
  153.             Gragjanin covek = secondQueue.dequeue();
  154.             if(covek.getVozacka() == 1) thirdQueue.enqueue(covek);
  155.             else System.out.println(covek.getImePrezime());
  156.         }
  157.  
  158.         while(!thirdQueue.isEmpty()) {
  159.             System.out.println(thirdQueue.dequeue().getImePrezime());
  160.         }
  161.  
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement