#include 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 } } } } }