Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- static int broj_elemenata;
- static int broj_prioriteta;
- static int broj_aktivnih_zadataka;
- struct Element {
- char znak;
- int prioritet;
- void set() {
- cout << "Unesite zadatak: "; cin >> znak;
- cout << "Unesite prioritet: "; cin >> prioritet;
- }
- };
- struct Queue {
- int size;
- int front;
- int rear;
- int *A;
- };
- void create_queue(Queue *q) {
- for (int i = 0; i <broj_prioriteta; i++) {
- q[i].size = broj_elemenata;
- q[i].front = q[i].rear = -1;
- q[i].A = new int[q[i].size];
- }
- }
- void enqueue(Queue *q, Element *e, int i) {
- int j = e[i].prioritet;
- q[j -1].rear = q[j -1].rear + 1;
- q[j-1 ].A[q[j-1].rear] = j;
- }
- void enqueue_All_Priorities(Queue *q, Element *e) {
- for (int i = 0; i < broj_elemenata; i++) {
- e[i].set();
- if ((q[e[i].prioritet - 1].rear == q[e[i].prioritet - 1].size-1)) {
- cout << "Niz sa prioritetom " << e[i].prioritet << " je popunjen sa zadacima!" << endl;
- }
- else {
- enqueue(q, e, i);
- broj_aktivnih_zadataka++;
- }
- }
- }
- void dequeue(Queue *q, Element *e) {
- int br;
- cout << "Unesite koliko zelite obrisati aktivnih zadataka: "; cin >> br;
- while (br > broj_aktivnih_zadataka) {
- cout << "Pogresan unos!Nema toliko aktivnih zadataka za brisanje\n";
- cout << "Unesite koliko zelite obrisati aktivnih zadataka: "; cin >> br;
- }
- int j = 0;
- for (int i = 0; i < br; i++) {
- if(q[j].front != q[j].rear){
- broj_aktivnih_zadataka--;
- q[j].front = q[j].front + 1;
- cout << "Obrisan zadatak sa prioritetom " << q[j].A[q[j].front] << endl;
- q[j].A[q[j].front] = 0;
- q[j].front = -1;
- for (int k = 0; k < q[j].rear; k++) {
- q[j].A[k] = q[j].A[k + 1];
- }
- q[j].rear = q[j].rear - 1;
- i++;
- }
- else {
- j++;
- }
- i--;
- }
- }
- void print(Queue *q, Element *e) {
- int br = 0;
- for (int i = 0; i < broj_prioriteta; i++) {
- cout << "Broj aktivnih zadataka na prioritetu broj " << i + 1 << ": ";
- for (int j = q[i].front + 1; j <= q[i].rear; j++) {
- br++;
- }
- if (br == 0) {
- cout << "Nema aktivnih zadataka!" << endl;
- }
- else {
- cout << "[Trenutno su aktivna " << br << " zadataka]\n";
- }
- br = 0;
- }
- cout << "------------------------------------------\n";
- cout << "Ukupan broj trenutno aktivnih zadataka: " << broj_aktivnih_zadataka << endl;
- cout << "------------------------------------------\n";
- }
- int menu() {
- int izbor;
- do {
- cout << "-------------------------\n";
- cout << " PRIORITY TASK MENU \n";
- cout << "-------------------------\n";
- cout << "1) Unesi nove zadatke\n";
- cout << "2) Obrisi zadatke\n";
- cout << "3) Ispisi aktivne zadatke\n";
- cout << "4) Kraj\n";
- cout << "-------------------------\n";
- cout << "Unesite izbor: "; cin >> izbor;
- return izbor;
- system("pause"); system("cls");
- } while (1);
- }
- int main() {
- cout << "Unesite koliko zelite unijeti zadataka: "; cin >> broj_elemenata;
- Element *e = new Element[broj_elemenata];
- cout << "Unesite broj prioriteta: "; cin >> broj_prioriteta;
- Queue *q = new Queue[broj_prioriteta];
- create_queue(q);
- enqueue_All_Priorities(q, e);
- system("pause"); system("cls");
- int izbor;
- do {
- izbor = menu();
- if (izbor < 1 || izbor>3) {
- break;
- }
- if (izbor == 1) {
- cout << "Unesite koliko zelite unijeti novih zadataka: "; cin >> broj_elemenata;
- enqueue_All_Priorities(q, e);
- system("pause"); system("cls");
- }
- if (izbor == 2) {
- dequeue(q, e);
- system("pause"); system("cls");
- }
- if (izbor == 3) {
- print(q, e);
- system("pause"); system("cls");
- }
- } while (1);
- delete[]q->A; q->A = nullptr;
- delete[]q; q = nullptr;
- delete[]e; e = nullptr;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement