- #include <iostream>
- using namespace std;
- void split(char tablica[2][50], char* napis)
- {
- int i = 0;
- int c = 0;
- int j = 0;
- while (napis[i] != '\0')
- {
- if (napis[i] != '-')
- {
- tablica[c][j] = napis[i];
- }
- else
- {
- tablica[c][j] = '\0';
- j = -1;
- c++;
- }
- i++;
- j++;
- }
- tablica[c][j] = '\0';
- }
- bool compare(string a, string b) {
- for (int i = 0; a[i] != '\0'; i++) {
- if (a[i] != b[i])
- return false;
- }
- return true;
- }
- //faktyczny progrM
- //const int maxsize = 128;
- #define maxsize 128
- struct mieNaTow
- {
- unsigned short ilosctow;
- char etykieta[2];
- };
- struct polka
- {
- mieNaTow mieNaTow_[maxsize];
- unsigned short iloscmiejsca;
- };
- struct regal
- {
- polka polka_[maxsize];
- unsigned short iloscpolek;
- };
- struct magazyn
- {
- regal regal_[maxsize];
- short iloscreagalow;
- polka podrpolka_;
- };
- struct skladd
- {
- static magazyn magazyn_[maxsize];//nie traktj tego jako zmienna statyczna bo jest w sekcji globalbej,inline nie musisz deklarowac
- unsigned short iloscmagazynow;
- regal podrregal;
- polka podrpolk;
- };
- magazyn skladd::magazyn_[128];
- int main() {
- skladd sklad;
- char a[2][50];
- string second;
- bool isEnd = false;
- char choice[20];
- while (!isEnd) {
- cin >> choice;
- //scanf("%s", &choice);
- if (compare(choice, "END"))
- isEnd = true;
- else {
- split(a, (char*)choice);
- char* first = a[0];
- char* second = a[1];
- if (compare(first, "SET"))
- {
- if (compare(second, "AP")) {
- short w;
- short r;
- short s;
- short P;
- cin >> w >> r >> s >> P;
- }
- else if (compare(second, "AS")) {
- short w;
- short r;
- short s;
- short P;
- cin >> w >> r >> s >> P;
- }
- else if (compare(second, "AR")) {
- short w;
- short r;
- short s;
- short P;
- cin >> w >> r >> s >> P;
- }
- else if (compare(second, "AW")) {
- short w;
- short r;
- short s;
- short P;
- cin >> w >> r >> s >> P;
- }
- else if (compare(second, "HW")) {
- short w;
- short P;
- cin >> w >> P;
- }
- else if (compare(second, "HR")) {
- short S;
- short P;
- cin >> S >> P;
- }
- else if (compare(second, "HS")) {
- short P;
- cin >> P;
- }
- }
- else if (compare(first, "PUT")) {
- if (compare(second, "W")) {
- short w;
- short r;
- short s;
- short P;
- short A;
- cin >> w >> r >> s >> P >> A;
- }
- else if (compare(second, "H")) {
- short w;
- short P;
- short A;
- cin >> w >> P >> A;
- }
- else if (compare(second, "R")) {
- short s;
- short p;
- short A;
- cin >> s >> p >> A;
- }
- else if (compare(second, "S")) {
- short p;
- short A;
- cin >> p >> A;
- }
- }
- else if (compare(first, "FILL")) {
- short w;
- short r;
- short s;
- short p;
- short a;
- cin >> w >> r >> s >> p >> a;
- sklad.iloscmagazynow = w;
- sklad.podrpolk.iloscmiejsca = p;
- for (int z = 0; z < sklad.podrpolk.iloscmiejsca; z++) {
- sklad.podrpolk.mieNaTow_[z].ilosctow = a;
- }
- sklad.podrregal.iloscpolek = s;
- for (int f = 0; f < sklad.podrregal.iloscpolek; f++) {
- sklad.podrregal.polka_[f].iloscmiejsca = s;
- for (int z = 0; z < sklad.podrregal.polka_[f].iloscmiejsca; z++) {
- sklad.podrregal.polka_[f].mieNaTow_[z].ilosctow = a;
- }
- }
- for (int i = 0; i < sklad.iloscmagazynow; i++) {
- sklad.magazyn_[i].iloscreagalow = r;
- sklad.magazyn_[i].podrpolka_.iloscmiejsca = p;
- for (int z = 0; z < sklad.podrpolk.iloscmiejsca; z++) {
- sklad.magazyn_[i].podrpolka_.mieNaTow_[z].ilosctow = a;
- //polkipodreczne dla magazyn_ow mamy
- }
- sklad.magazyn_[i].podrpolka_.iloscmiejsca = p;
- for (int j = 0; j < sklad.magazyn_[i].iloscreagalow; j++) {
- sklad.magazyn_[i].regal_[j].iloscpolek = s;
- for (int k = 0; k < sklad.magazyn_[i].regal_[j].iloscpolek; k++) {
- sklad.magazyn_[i].regal_[j].polka_[k].iloscmiejsca = p;
- for (int g = 0; g < sklad.magazyn_[i].regal_[j].polka_[k].iloscmiejsca; g++) {
- sklad.magazyn_[i].regal_[j].polka_[k].mieNaTow_[g].ilosctow = a;
- sklad.magazyn_[i].regal_[j].polka_[k].mieNaTow_[g].etykieta[0] = '0';
- sklad.magazyn_[i].regal_[j].polka_[k].mieNaTow_[g].etykieta[1] = '0';
- }
- }
- }
- }
- }
- else if (compare(first, "POP")) {
- if (compare(second, "W")) {
- short w;
- short r;
- short s;
- short p;
- short A;
- cin >> w >> r >> s >> p >> A;
- cout << "xd";
- ;
- }
- else if (compare(second, "H")) {
- short w;
- short p;
- short A;
- cin >> w >> p >> A;
- }
- else if (compare(second, "R")) {
- short s;
- short p;
- short A;
- cin >> s >> p >> A;
- }
- else if (compare(second, "S")) {
- short p;
- short A;
- cin >> p >> A;
- }
- }
- else if (compare(first, "MOV")) {
- if (compare(second, "W")) {
- short wb;
- short rb;
- short sb;
- short we;
- short re;
- short se;
- short p;
- short A;
- cin >> wb >> rb >> sb >> we >> re >> se >> p >> A;
- }
- else if (compare(second, "H")) {
- short w;
- short r;
- short s;
- short p;
- short A;
- cin >> w >> r >> s >> p >> A;
- }
- else if (compare(second, "R")) {
- short w;
- short r;
- short sb;
- short se;
- short p;
- short A;
- cin >> w >> r >> sb >> se >> p >> A;
- }
- else if (compare(second, "S")) {
- short s;
- short p;
- short A;
- cin >> s >> p >> A;
- }
- }
- else if (compare(first, "GET")) {
- if (compare(second, "E")) {
- //GET - E wyswietla ilosc towarow w skladzie
- int suma = 0;
- for (int i = 0; i < sklad.iloscmagazynow; i++) {// ddla kazdego magazyn_u
- for (int j = 0; j < sklad.magazyn_[i].iloscreagalow; j++) {//dla kazdego regal_u
- for (int k = 0; k < sklad.magazyn_[i].regal_[j].iloscpolek; k++) {//dla kazdegj polki
- for (int g = 0; g < sklad.magazyn_[i].regal_[j].polka_[k].iloscmiejsca; g++) {//dla kazdego miejsca
- //sprawdz czy od zera czy od jedynki
- suma += sklad.magazyn_[i].regal_[j].polka_[k].mieNaTow_[g].ilosctow;
- }
- }
- }
- }
- suma += sklad.podrpolk.iloscmiejsca;
- for (int i = 0; i < sklad.podrregal.iloscpolek; i++) {
- suma += sklad.podrregal.polka_[i].iloscmiejsca;
- }
- for (int i = 0; i < sklad.iloscmagazynow; i++) {
- suma += sklad.magazyn_[i].podrpolka_.iloscmiejsca;
- }
- cout << suma;
- }
- else if (compare(second, "W")) {
- short w;
- cin >> w;//wyswietla ilosc towarow w magazyn_ie w
- if (sklad.iloscmagazynow < w || w < 0) {
- cout << "error";
- }
- else {
- int suma = 0;
- for (int j = 0; j < sklad.magazyn_[w].iloscreagalow; j++) {//dla kazdego regal_u
- for (int k = 0; k < sklad.magazyn_[w].regal_[j].iloscpolek; k++) {//dla kazdegj polki
- for (int g = 0; g < sklad.magazyn_[w].regal_[j].polka_[k].iloscmiejsca; g++) {//dla kazdego miejsca
- //sprawdz czy od zera czy od jedynki
- suma += sklad.magazyn_[w].regal_[j].polka_[k].mieNaTow_[g].ilosctow;
- }
- }
- }
- cout << suma;
- }
- int suma = 0;
- // ddla kazdego magazyn_u
- }
- else if (compare(second, "RW")) {
- int suma = 0;
- short w;
- short r;
- cin >> w;
- cin >> r;
- if (w < 0 || r < 0 || sklad.iloscmagazynow < w || sklad.magazyn_[w].iloscreagalow < r) {
- cout << "error";
- }
- else {
- //dla kazdego regal_u
- // ddla kazdego magazyn_u
- //dla kazdego regal_u
- for (int k = 0; k < sklad.magazyn_[w].regal_[r].iloscpolek; k++) {//dla kazdegj polki
- for (int g = 0; g < sklad.magazyn_[w].regal_[r].polka_[k].iloscmiejsca; g++) {//dla kazdego miejsca
- //sprawdz czy od zera czy od jedynki
- suma += sklad.magazyn_[w].regal_[r].polka_[k].mieNaTow_[g].ilosctow;
- }
- }
- cout << suma;
- }
- }
- else if (compare(second, "RH")) {
- for (int i = 0; i < sklad.podrregal.iloscpolek; i++)
- cout << sklad.podrregal.polka_[i].mieNaTow_;
- }
- else if (compare(second, "SW")) {
- short w;
- short r;
- short s;
- cin >> w;
- cin >> r;
- cin >> s;
- int suma = 0;
- if (w < 0 || r < 0 || s < 0 || sklad.iloscmagazynow < w || sklad.magazyn_[w].iloscreagalow < r || sklad.magazyn_[w].regal_[r].iloscpolek < s) {
- cout << "error";
- }
- // ddla kazdego magazyn_u
- //dla kazdego regal_u
- //dla kazdegj polki
- for (int g = 0; g < sklad.magazyn_[w].regal_[r].polka_[s].iloscmiejsca; g++) {//dla kazdego miejsca
- //sprawdz czy od zera czy od jedynki
- suma += sklad.magazyn_[w].regal_[r].polka_[s].mieNaTow_[g].ilosctow;
- }
- cout << suma;
- }
- else if (compare(second, "SH")) {
- short w;
- cin >> w;
- if (sklad.iloscmagazynow < w || w < 0) {
- cout << "error";
- }
- else {
- int suma;
- for (int i = 0; i < sklad.magazyn_[w].podrpolka_.iloscmiejsca; i++) {
- suma += sklad.magazyn_[w].podrpolka_.mieNaTow_[i].ilosctow;
- }
- cout << suma;
- }
- }
- else if (compare(second, "SR")) {
- short s;
- cin >> s;
- //podreczny regal_ na polsce o nr s
- if (sklad.podrregal.iloscpolek < 0 || sklad.podrregal.iloscpolek < 0) {
- cout << "error";
- }
- else {
- int sum = 0;
- cout << sklad.podrregal.polka_[s].mieNaTow_;
- for (int i = 0; i < sklad.podrregal.polka_[s].iloscmiejsca; i++) {
- sum += sklad.podrregal.polka_[s].mieNaTow_[i].ilosctow;
- }
- cout << sum;
- }
- }
- else if (compare(second, "S")) {
- int sum = 0;
- for (int i = 0; i < sklad.podrpolk.iloscmiejsca; i++) {
- sum += sklad.podrpolk.mieNaTow_[i].ilosctow;
- }
- cout << sum; // bo jest tylko jedna dlatego bez petli i indexu
- }
- else if (compare(second, "LW")) {
- short s; //polka_
- short w; //magazyn_
- short r; //regal_
- short p;///miejsce
- cin >> s >> w >> r >> p;
- if (w < 0 || r < 0 || s < 0 || p < 0 || sklad.iloscmagazynow < w || sklad.magazyn_[w].iloscreagalow < r || sklad.magazyn_[w].regal_[r].iloscpolek < s || sklad.magazyn_[w].regal_[r].iloscpolek < p) {
- cout << "error";
- }
- else {
- cout << sklad.magazyn_[w].regal_[r].polka_[s].mieNaTow_[p].etykieta; // bo jest tylko jedna dlatego bez petli i indexu
- }
- }
- else if (compare(second, "LH")) {
- short w;
- short p;
- cin >> w >> p;
- if (w < 0 || p < 0 || sklad.iloscmagazynow < w || sklad.magazyn_[w].podrpolka_.iloscmiejsca < p) {
- cout << "error";
- }
- else {
- cout << sklad.magazyn_[w].podrpolka_.mieNaTow_[p].etykieta;
- }
- // bo jest tylko jedna dlatego bez petli i indexu
- }
- else if (compare(second, "LR")) {
- short s;
- short p;
- cin >> s >> p;
- if (s < 0 || p < 0 || sklad.podrregal.iloscpolek < s || sklad.podrregal.polka_[s].iloscmiejsca < p) {
- cout << sklad.podrregal.polka_[s].mieNaTow_[p].etykieta; // bo jest tylko jedna dlatego bez petli i indexu
- }
- }
- else if (compare(second, "LS")) {
- short p;
- cin >> p;
- if (p < 0 || sklad.podrpolk.iloscmiejsca < p) {
- cout << "error";
- }
- else {
- cout << sklad.podrpolk.mieNaTow_[p].etykieta;
- }
- // bo jest tylko jedna dlatego bez petli i indexu
- }
- }
- }
- }
- }