Advertisement
Filip_Markoski

[ADS] Kolokvium

Nov 5th, 2017
601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.28 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.  
  58. public class Kolokvium {
  59.     public static void main(String[] args) {
  60.  
  61.         Scanner br = new Scanner(System.in);
  62.  
  63.         ArrayQueue<String> aps = new ArrayQueue<String>(50);
  64.         ArrayQueue<String> both = new ArrayQueue<String>(50);
  65.  
  66.         int i, j, brStudentiTermin, brStudentiAPS, brStudentiAPSMatematika, brStudentiMatematika;
  67.  
  68.         brStudentiTermin = Integer.parseInt(br.nextLine());
  69.         brStudentiAPSMatematika = Integer.parseInt(br.nextLine());
  70.         String[] imeStudentiAPSMatematika = new String[brStudentiAPSMatematika];
  71.  
  72.         for (i = 0; i < brStudentiAPSMatematika; i++) {
  73.             String red = br.nextLine();
  74.             String[] pom = red.split(" ");
  75.             imeStudentiAPSMatematika[i] = pom[0];
  76.             both.enqueue(imeStudentiAPSMatematika[i]);
  77.         }
  78.  
  79.         brStudentiAPS = Integer.parseInt(br.nextLine());
  80.         String[] imeStudentiAPS = new String[brStudentiAPS];
  81.  
  82.         for (i = 0; i < brStudentiAPS; i++) {
  83.             String red = br.nextLine();
  84.             String[] pom = red.split(" ");
  85.             imeStudentiAPS[i] = pom[0];
  86.             aps.enqueue(imeStudentiAPS[i]);
  87.         }
  88.  
  89.         brStudentiMatematika = Integer.parseInt(br.nextLine());
  90.         String[] imeStudentiMatematika = new String[brStudentiMatematika];
  91.  
  92.         for (i = 0; i < brStudentiMatematika; i++) {
  93.             String red = br.nextLine();
  94.             String[] pom = red.split(" ");
  95.             imeStudentiMatematika[i] = pom[0];
  96.             //redAPS.enqueue(imeStudentiMatematika[i]);
  97.         }
  98.  
  99.         /*
  100.         System.out.println();
  101.         */
  102.  
  103.         System.out.println(brStudentiTermin);
  104.         System.out.println(brStudentiAPSMatematika);
  105.         System.out.println(Arrays.toString(imeStudentiAPSMatematika));
  106.         System.out.println(Arrays.toString(imeStudentiAPS));
  107.         System.out.println(Arrays.toString(imeStudentiMatematika));
  108.  
  109.         System.out.println(Arrays.toString(both.elems));
  110.         System.out.println(Arrays.toString(aps.elems));
  111.  
  112.         System.out.println("\n MY CODE \n");
  113.  
  114.         /* Validate both, remove fakes */
  115.         ArrayQueue<String> tempBoth = new ArrayQueue<>(50);
  116.         while (!both.isEmpty()) {
  117.             String temp = both.dequeue();
  118.             boolean isValid = true;
  119.             for (int k = 0; k < imeStudentiMatematika.length; k++) {
  120.                 if (!temp.equals(imeStudentiMatematika[k])) {
  121.                     isValid = false;
  122.                 }
  123.             }
  124.             if (!isValid) {
  125.                 aps.enqueue(temp);
  126.             } else {
  127.                 tempBoth.enqueue(temp);
  128.             }
  129.         }
  130.  
  131.         both = tempBoth;
  132.         while (!aps.isEmpty()) {
  133.             String temp = aps.dequeue();
  134.             both.enqueue(temp);
  135.         }
  136.  
  137.         int term = 1;
  138.         while (!both.isEmpty()) {
  139.             System.out.println(term++);
  140.             for (int k = 0; k < brStudentiTermin; k++) {
  141.                 if (!both.isEmpty()) {
  142.                     System.out.println(both.dequeue());
  143.                 }
  144.             }
  145.         }
  146.  
  147. /*
  148. Се организира прв колоквиум по предметот Алгоритми и структури на податоци.
  149. За таа цел се отвара анкета по предметот на која студентите се пријавуваат.
  150. Анкетата има дадено 2 избори:
  151.  
  152. 1)  Полагам во било кој термин
  153.  
  154. 2)  Испитот ми се преклопува со Математика
  155.  
  156. Студентите се поставуваат во термините според редоследите во кои се примени (почнувајќи од првиот).
  157. Сите студенти сакаат да полагаат колку е можно порано па затоа дел од студентите мамат и
  158. во анкетата наведуваат дека истиот ден полагаат и Математика.
  159. Асистентите бараат список на студенти кои полагаат Математика и добиваат.
  160. Потоа се започнува со распределба на студентите во термини:
  161. прво во термините се доделуваат студентите кои се пријавиле дека полагаат и Математика (по редоследот по кој се пријавиле),
  162. меѓутоа секој од овие студенти се проверува дали навистина полага и Математика и
  163. ако мамел се сместува на крај од списокот на студенти кои избрале дека полагаат било кој термин.
  164. Потоа се изминуваат останатите студенти и се доделуваат во термини.
  165.  
  166. Влез: Се дава прво капацитетот на студенти по термин (т.е. по колку студенти во еден термин може да полагаат).
  167. Следно се дава бројот и списокот на студенти кои истиот ден полагаат и Математика (според редоследот по кој се пријавиле).
  168. Потоа се дава бројот и списокот на останатите студенти (според редоследот по кој се пријавиле).
  169. На крај се дава број и список на студенти кои навистина полагаат Математика. На излез се печати број на термин,
  170. па студентите кои полагаат во тој термин.
  171. */
  172.  
  173. /*
  174. Sample input
  175. 2
  176. 4
  177. IlinkaIvanoska
  178. IgorKulev
  179. MagdalenaKostoska
  180. HristinaMihajloska
  181. 3
  182. VladimirTrajkovik
  183. SlobodanKalajdziski
  184. AnastasMisev
  185. 1
  186. IlinkaIvanoska
  187. Sample output
  188. 1
  189. IlinkaIvanoska
  190. VladimirTrajkovik
  191. 2
  192. SlobodanKalajdziski
  193. AnastasMisev
  194. 3
  195. IgorKulev
  196. MagdalenaKostoska
  197. 4
  198. HristinaMihajloska
  199. */
  200.  
  201.         // Vasiot kod ovde...
  202.  
  203.  
  204.     }
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement