Advertisement
SlavkovB

[АПС] Колоквиум група 2

Sep 16th, 2019
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.44 KB | None | 0 0
  1. /**Колоквиум
  2.  
  3. Се организира колоквиумска недела на ФИНКИ и за таа цел асистентите се доделуваат за чување на испити.
  4. За таа цел се прави редица од асистентите во која на почеток се најмладите асистенти, а на крај се највозрасните.
  5.  
  6. Потоа се даваат предметите и по колку асистенти се потребни за чување на секој предмет.
  7. Има некои асистенти кои се отсутни во тековната колоквиумска недела.
  8.  
  9. Затоа дополнително се дава список кои од асистентите се отсутни.
  10.  
  11. Асистентите се доделуваат на следниот начин:
  12. Прво се доделуваат најмладите, а на крај најстарите, со тоа што ако некој асистент е отсутен тој се игнорира во редицата.
  13.  
  14. После секое доделување на предмет асистентот се сместува на крај на редицата (т.е. ако на секој асистент му се доделил за чување предмет, а има потреба од уште асистенти, повторно се започнува од најмладите).
  15.  
  16. Влез: Се дава прво бројот на асистенти и имињата на асистентите од најмлад до најстар.
  17. Следно се дава бројот на предмети за кои се потребни асистенти, па се наведуваат предметите и по колку асистенти се потребни за секој предмет.
  18. Потоа се дава бројот на асистенти кои се отсутни и списокот на тековно отсутните асистенти.
  19.  
  20. На излез се печати предмет, па асистенти задолжени за чување на тој предмет (за секој од дадените предмети).
  21.  
  22. Име на класа (за Јава): Kolokvium
  23.  
  24. Забелешка: При реализација на задачите МОРА да се користат дадените структури, а не да користат помошни структури како низи или сл.
  25. Sample input
  26.  
  27. 4
  28. IlinkaIvanoska
  29. IgorKulev
  30. MagdalenaKostoska
  31. HristinaMihajloska
  32. 3
  33. APS 3
  34. MIS 1
  35. OOS 2
  36. 1
  37. HristinaMihajloska
  38.  
  39. Sample output
  40. APS
  41. 3
  42. IlinkaIvanoska
  43. IgorKulev
  44. MagdalenaKostoska
  45. MIS
  46. 1
  47. IlinkaIvanoska
  48. OOS
  49. 2
  50. IgorKulev
  51. MagdalenaKostoska
  52. */
  53.  
  54. //CODE
  55.  
  56.  
  57.  
  58.  
  59. import java.util.NoSuchElementException;
  60. import java.util.Scanner;
  61.  
  62. class SLLNode<E> {
  63.     protected E element;
  64.     protected SLLNode<E> succ;
  65.  
  66.     public SLLNode(E elem, SLLNode<E> succ) {
  67.         this.element = elem;
  68.         this.succ = succ;
  69.     }
  70.  
  71.     @Override
  72.     public String toString() {
  73.         return element.toString();
  74.     }
  75. }
  76.  
  77. interface Queue<E> {
  78.     public boolean isEmpty();
  79.  
  80.     public int size();
  81.  
  82.     public E peek();
  83.  
  84.     public void clear();
  85.  
  86.     public void enqueue(E x);
  87.  
  88.     public E dequeue();
  89. }
  90.  
  91.  
  92. class ArrayQueue<E> implements Queue<E> {
  93.  
  94.     E[] elems;
  95.     int length, front, rear;
  96.  
  97.  
  98.     @SuppressWarnings("unchecked")
  99.     public ArrayQueue (int maxlength) {
  100.         elems = (E[]) new Object[maxlength];
  101.         clear();
  102.     }
  103.  
  104.     public boolean isEmpty () {
  105.         return (length == 0);
  106.     }
  107.  
  108.     public int size () {
  109.         return elems.length;
  110.     }
  111.  
  112.     public E peek () {
  113.         if (length > 0)
  114.             return elems[front];
  115.         else
  116.             throw new NoSuchElementException();
  117.     }
  118.  
  119.     public void clear () {
  120.         length = 0;
  121.         front = rear = 0;  // arbitrary
  122.     }
  123.  
  124.     public void enqueue (E x) {
  125.         elems[rear++] = x;
  126.         if (rear == elems.length)  rear = 0;
  127.         length++;
  128.     }
  129.  
  130.     public E dequeue () {
  131.         if (length > 0) {
  132.             E frontmost = elems[front];
  133.             elems[front++] = null;
  134.             if (front == elems.length)  front = 0;
  135.             length--;
  136.             return frontmost;
  137.         } else
  138.             throw new NoSuchElementException();
  139.     }
  140. }
  141.  
  142. public class Kolokvium {
  143.     private static boolean otstutni(String[] imeOtsutni, String asistent) {
  144.         for (int i = 0; i < imeOtsutni.length; i++) {
  145.             if (imeOtsutni[i].equals(asistent))
  146.                 return true;
  147.         }
  148.         return false;
  149.     }
  150.  
  151.     private static void Kolokvium(ArrayQueue<String> redAsistenti, ArrayQueue<String> redPredmeti,
  152.             Integer[] brAsistentiPredmet, String[] imeOtsutni) {
  153.         int index = 0;
  154.  
  155.         while (!redPredmeti.isEmpty()) {
  156.             System.out.println(redPredmeti.dequeue());
  157.             System.out.println(brAsistentiPredmet[index]);
  158.             int count = brAsistentiPredmet[index];
  159.             ++index;
  160.  
  161.             while (count > 0) {
  162.                 String asistent = redAsistenti.dequeue();
  163.                 if (!otstutni(imeOtsutni, asistent)) {
  164.                     System.out.println(asistent);
  165.                     redAsistenti.enqueue(asistent);
  166.                     --count;
  167.                 }
  168.             }
  169.         }
  170.     }
  171.  
  172.     public static void main(String[] args) {
  173.  
  174.         Scanner br = new Scanner(System.in);
  175.  
  176.         ArrayQueue<String> redAsistenti = new ArrayQueue<String>(50);
  177.         ArrayQueue<String> redPredmeti = new ArrayQueue<String>(50);
  178.  
  179.         int i, brAsistenti, brPredmeti, brOtsutni;
  180.  
  181.         brAsistenti = Integer.parseInt(br.nextLine());
  182.         String[] imeAsistenti = new String[brAsistenti];
  183.  
  184.         for (i = 0; i < brAsistenti; i++) {
  185.             String red = br.nextLine();
  186.             String[] pom = red.split(" ");
  187.             imeAsistenti[i] = pom[0];
  188.             redAsistenti.enqueue(imeAsistenti[i]);
  189.         }
  190.  
  191.         brPredmeti = Integer.parseInt(br.nextLine());
  192.         String[] imePredmeti = new String[brPredmeti];
  193.         Integer[] brAsistentiPredmet = new Integer[brPredmeti];
  194.  
  195.         for (i = 0; i < brPredmeti; i++) {
  196.             String red = br.nextLine();
  197.             String[] pom = red.split(" ");
  198.             imePredmeti[i] = pom[0];
  199.             redPredmeti.enqueue(imePredmeti[i]);
  200.             brAsistentiPredmet[i] = Integer.parseInt(pom[1]);
  201.         }
  202.  
  203.         brOtsutni = Integer.parseInt(br.nextLine());
  204.         String[] imeOtsutni = new String[brOtsutni];
  205.         for (i = 0; i < brOtsutni; i++) {
  206.             String red = br.nextLine();
  207.             String[] pom = red.split(" ");
  208.             imeOtsutni[i] = pom[0];
  209.         }
  210.  
  211.         Kolokvium(redAsistenti, redPredmeti, brAsistentiPredmet, imeOtsutni);
  212.         br.close();
  213.     }
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement