Advertisement
SlavkovB

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

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