Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <string>
- using namespace std;
- struct struktura
- {
- // 1 wsp - numer stsou 2 - wartość
- int stos[10][10];
- int kolejka[10][10];
- int wierzcholekStosu[10];
- int wierzcholekKolejki[10];
- };
- struktura dane;
- void new_s(int i)
- {
- //dane.wierzcholekStosu[i] = 0;
- }
- void push(int i, int e)
- {
- if (dane.wierzcholekStosu[i] == 10)
- {
- cout << "error: stack is full\n";
- }
- else
- {
- dane.stos[i][dane.wierzcholekStosu[i]] = e;
- dane.wierzcholekStosu[i]++;
- }
- }
- void pop(int i)
- {
- if (dane.wierzcholekStosu[i] == 0)
- {
- cout << "error: stack is empty\n";
- }
- else
- {
- dane.wierzcholekStosu[i]--;
- }
- }
- void delete_s(int i)
- {
- dane.wierzcholekStosu[i] = 0;
- }
- void print_s(int i)
- {
- if (dane.wierzcholekStosu[i]==0)
- {
- cout << "empty\n";
- }
- else
- {
- for (int j = 0; j < dane.wierzcholekStosu[i]; j++)
- {
- cout << dane.stos[i][j] << " ";
- }
- cout << "\n";
- }
- }
- void stackToStack(int i, int j)
- {
- push(j,dane.stos[i][dane.wierzcholekStosu[i]-1]);
- pop(i);
- }
- void enqueue(int i, int e)
- {
- if (dane.wierzcholekKolejki[i] == 10)
- {
- cout << "error: queue is full\n";
- }
- else
- {
- dane.kolejka[i][dane.wierzcholekKolejki[i]] = e;
- dane.wierzcholekKolejki[i]++;
- }
- }
- void dequeue(int i)
- {
- if (!dane.wierzcholekKolejki[i])
- {
- cout << "error: queue is empty\n";
- }
- else
- {
- dane.wierzcholekKolejki[i]--;
- for (int k = 0; k < dane.wierzcholekKolejki[i]; k++)
- {
- dane.kolejka[i][k] = dane.kolejka[i][k + 1];
- }
- }
- }
- void delete_q(int i)
- {
- dane.wierzcholekKolejki[i] = 0;
- }
- void new_q(int i)
- {
- }
- void print_q(int i)
- {
- if (!dane.wierzcholekKolejki[i])
- {
- cout << "empty\n";
- }
- else
- {
- for (int j = dane.wierzcholekKolejki[i]-1; j >= 0; j--)
- {
- cout << dane.kolejka[i][j] << " ";
- }
- cout << "\n";
- }
- }
- void stackToQueue(int i, int e)
- {
- }
- int main(int argc, char const *argv[])
- {
- string operacja1parametr[8];
- operacja1parametr[0] = "new_s";
- operacja1parametr[1] = "pop";
- operacja1parametr[2] = "delete_s";
- operacja1parametr[3] = "print_s";
- operacja1parametr[4] = "new_q";
- operacja1parametr[5] = "dequeue";
- operacja1parametr[6] = "delete_q";
- operacja1parametr[7] = "print_q";
- string operacja2parametr[6];
- operacja2parametr[0] = "push";
- operacja2parametr[1] = "stack->stack";
- operacja2parametr[2] = "enqueue";
- operacja2parametr[3] = "stack->queue";
- operacja2parametr[4] = "queue->queue";
- operacja2parametr[5] = "queue->stack";
- void(*funkcja1parametr[8])(int);
- funkcja1parametr[0] = new_s;
- funkcja1parametr[1] = pop;
- funkcja1parametr[2] = delete_s;
- funkcja1parametr[3] = print_s;
- funkcja1parametr[4] = new_q;
- funkcja1parametr[5] = dequeue;
- funkcja1parametr[6] = delete_q;
- funkcja1parametr[7] = print_q;
- void(*funkcja2parametr[3])(int, int);
- funkcja2parametr[0] = push;
- funkcja2parametr[1] = stackToStack;
- funkcja2parametr[2] = enqueue;
- funkcja2parametr[3] = stackToQueue;
- funkcja2parametr[4] = queueToQueue;
- funkcja2parametr[5] = queueToStack;
- string wejscie;
- int i = 0;
- int e = 0;
- int j = 0;
- while (cin >> wejscie)
- {
- //cin >> wejscie;
- cin >> i;
- for (j = 0; j < 8; ++j)
- {
- if (!operacja1parametr[j].compare(wejscie))
- {
- funkcja1parametr[j](i);
- break;
- }
- }
- if (j != 8)
- {
- continue;
- }
- std::cin >> e;
- for (j = 0; j < 3; ++j)
- {
- if (!operacja2parametr[j].compare(wejscie))
- {
- funkcja2parametr[j](i, e);
- break;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement