Filip_Markoski

[ADS] Kolokvium2

Nov 5th, 2017
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.41 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4. class ArrayQueue<E> {
  5.     E[] elems;
  6.     int length, front, rear;
  7.  
  8.     @SuppressWarnings("unchecked")
  9.     public ArrayQueue(int maxlength) {
  10.         elems = (E[]) new Object[maxlength];
  11.         clear();
  12.     }
  13.  
  14.     public boolean isEmpty() {
  15.         return (length == 0);
  16.     }
  17.  
  18.     public int size() {
  19.         return length;
  20.     }
  21.  
  22.     public E peek() {
  23.         if (length > 0)
  24.             return elems[front];
  25.         else {
  26.             System.out.println("Redicata e prazna");
  27.             return null;
  28.         }
  29.     }
  30.  
  31.     public void clear() {
  32.         length = 0;
  33.         front = rear = 0;
  34.     }
  35.  
  36.     public void enqueue(E x) {
  37.         elems[rear++] = x;
  38.         if (rear == elems.length)
  39.             rear = 0;
  40.         length++;
  41.     }
  42.  
  43.     public E dequeue() {
  44.         if (length > 0) {
  45.             E frontmost = elems[front];
  46.             elems[front++] = null;
  47.             if (front == elems.length)
  48.                 front = 0;
  49.             length--;
  50.             return frontmost;
  51.         } else {
  52.             System.out.println("Redicata e prazna");
  53.             return null;
  54.         }
  55.     }
  56.  
  57.     @Override
  58.     public String toString() {
  59.         return "ArrayQueue{" +
  60.                 "elems=" + Arrays.toString(elems) +
  61.                 '}';
  62.     }
  63. }
  64.  
  65. public class Kolokvium {
  66.     public static void main(String[] args) {
  67.  
  68.         Scanner br = new Scanner(System.in);
  69.  
  70.         ArrayQueue<String> redAsistenti = new ArrayQueue<String>(50);
  71.         ArrayQueue<String> redPredmeti = new ArrayQueue<String>(50);
  72.  
  73.  
  74.         int i, brAsistenti, brPredmeti, brOtsutni;
  75.  
  76.         brAsistenti = Integer.parseInt(br.nextLine());
  77.         String[] imeAsistenti = new String[brAsistenti];
  78.  
  79.         for (i = 0; i < brAsistenti; i++) {
  80.             String red = br.nextLine();
  81.             String[] pom = red.split(" ");
  82.             imeAsistenti[i] = pom[0];
  83.             redAsistenti.enqueue(imeAsistenti[i]);
  84.         }
  85.  
  86.         brPredmeti = Integer.parseInt(br.nextLine());
  87.         String[] imePredmeti = new String[brPredmeti];
  88.         Integer[] brAsistentiPredmet = new Integer[brPredmeti];
  89.  
  90.         for (i = 0; i < brPredmeti; i++) {
  91.             String red = br.nextLine();
  92.             String[] pom = red.split(" ");
  93.             imePredmeti[i] = pom[0];
  94.             redPredmeti.enqueue(imePredmeti[i]);
  95.             brAsistentiPredmet[i] = Integer.parseInt(pom[1]);
  96.             //System.out.println(brAsistentiPredmet[i]+"\n");
  97.         }
  98.  
  99.         brOtsutni = Integer.parseInt(br.nextLine());
  100.         String[] imeOtsutni = new String[brOtsutni];
  101.         for (i = 0; i < brOtsutni; i++) {
  102.             String red = br.nextLine();
  103.             String[] pom = red.split(" ");
  104.             imeOtsutni[i] = pom[0];
  105.         }
  106.  
  107. /*
  108. Се организира колоквиумска недела на ФИНКИ и за таа цел асистентите се доделуваат за чување на испити.
  109. За таа цел се прави редица од асистентите во која на почеток се најмладите асистенти, а на крај се највозрасните.
  110. Потоа се даваат предметите и по колку асистенти се потребни за чување на секој предмет.
  111. Има некои асистенти кои се отсутни во тековната колоквиумска недела. Затоа дополнително се дава список кои од асистентите се отсутни. Асистентите се доделуваат на следниот начин: Прво се доделуваат најмладите, а на крај најстарите, со тоа што ако некој асистент е отсутен тој се игнорира во редицата. После секое доделување на предмет асистентот се сместува на крај на редицата (т.е. ако на секој асистент му се доделил за чување предмет, а има потреба од уште асистенти, повторно се започнува од најмладите).
  112.  
  113. Влез:
  114. Се дава прво бројот на асистенти и имињата на асистентите од најмлад до најстар. Следно се дава бројот на предмети за кои се потребни асистенти, па се наведуваат предметите и по колку асистенти се потребни за секој предмет. Потоа се дава бројот на асистенти кои се отсутни и списокот на тековно отсутните асистенти. На излез се печати предмет, па асистенти задолжени за чување на тој предмет (за секој од дадените предмети).
  115.  
  116. */
  117.         System.out.println(Arrays.toString(brAsistentiPredmet));
  118.         System.out.println(brAsistenti + " " + brPredmeti + " " + brOtsutni);
  119.         System.out.println(redAsistenti);
  120.         System.out.println(redPredmeti);
  121.  
  122.         ArrayQueue<String> assisstants = new ArrayQueue<String>(50);
  123.         /* validate assistants */
  124.         while (!redAsistenti.isEmpty()) {
  125.             String temp = redAsistenti.dequeue();
  126.             for (int j = 0; j < imeOtsutni.length; j++) {
  127.                 if (!temp.equals(imeOtsutni[j])) {
  128.                     assisstants.enqueue(temp);
  129.                 }
  130.             }
  131.         }
  132.  
  133.         int j = 0;
  134.         System.out.println(assisstants);
  135.         while (!redPredmeti.isEmpty()){
  136.             String subject = redPredmeti.dequeue();
  137.             System.out.println(subject);
  138.             System.out.println(brAsistentiPredmet[j]);
  139.             for (int k = 0; k < brAsistentiPredmet[j]; k++) {
  140.                 String temp = assisstants.dequeue();
  141.                 System.out.println(temp);
  142.                 assisstants.enqueue(temp);
  143.             }
  144.             j++;
  145.         }
  146.  
  147.     }
  148. }
  149. /*
  150.  
  151. Sample input
  152. 4
  153. IlinkaIvanoska
  154. IgorKulev
  155. MagdalenaKostoska
  156. HristinaMihajloska
  157. 3
  158. APS 3
  159. MIS 1
  160. OOS 2
  161. 1
  162. HristinaMihajloska
  163.  
  164. Sample output
  165. APS
  166. 3
  167. IlinkaIvanoska
  168. IgorKulev
  169. MagdalenaKostoska
  170. MIS
  171. 1
  172. IlinkaIvanoska
  173. OOS
  174. 2
  175. IgorKulev
  176. MagdalenaKostoska
  177. */
Advertisement
Add Comment
Please, Sign In to add comment