Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Program do magazynowania.
Forum PHP.pl > Forum > PHP
ziomek_1
Witam wszystich,



Mam do napisania program w PHP do magazynowania.

Magazyn ma postac - planszy do gry w szachy - jest dwu-wymiarowy. (np 10x10, 5x10, 50x5 itd)

Mam napisac program gdzie bede wprowadzal rozmiar magazynu np 10x10 a oraz rozmiar pudelka np 5x2, 2x4 itd

Program ma sprawdzic ile pudelek zmiesci sie w magazynie i ile wolnych miejsc zostanie zmarnowanych.

Przyklady:

magazyn (10x2) - pudelko (6x2) - tutaj moge ustawic tylko jedno pudelko i zostanie 4x2 = czyli 8 kwadratow.

magazyn (10x2) - pudelko (2x2) - tutaj moge ustawic piec pudelek i nie zostanie zadne pole wolne.

Chodzi mi o sama logike spawdzania.



Dziekuje z gory.

PS - jesli jest cos niezrozumiale prosze pytac.
Pyton_000
w twoim [przypadku wystarczy sprawdzić czy wymiary pudełka zą < od wymiarów magazynu, obliczyć powierzchnię magazynu, pudełka, dzielenie i gotowe.
ziomek_1
Cytat(Pyton_000 @ 22.09.2015, 10:50:39 ) *
w twoim [przypadku wystarczy sprawdzić czy wymiary pudełka zą < od wymiarów magazynu, obliczyć powierzchnię magazynu, pudełka, dzielenie i gotowe.


Witam,

Ten sposob nie zadziala.

Problem jest np. kiedy magazyn (4,6) a pudelko (3,2), tutaj w rzeczywistosci wejdzie tylko 3 pudelka, a jezeli liczyc po polu powiezchni wejdze 4

X X X E
X X X E
X X X E
X X X E
X X X E
X X X E

gdzie x to znaczy pudelka
E - zostaje wolne (zmarnowane)
prz3kus
Odpowiedzi zawsze bedą dwie w zależności jak ułożysz pudełka.
- mierzysz pierwszy bok magazynu(np szerokosc gdzie amsz 4)
- potem patrzysz ile pudełek zmiesci sie na w szerokosci(jezeli ulozysz bokiem o szerokosci 3) czyli wyszlo ci 1 pudełko
- wykonujesz wzór [ilość pudełek]x[szerokość_pudełka]-[szerokosc magazynu] = [ile_szerokosci_odpadnie]

- tak samo liczysz dla wysokosci

- potem:
[ilość_pudełek_szerokość]x[ilość_pudełek_wysokosc] = [ile_pudelek_wejdzie]
[ile_szerokosci_odpadnie_szerokosc]x [ile_szerokosci_odpadnie_wysokosc] = [ileosc_pola_zmarnowanego]

Identycznie wykonać tylko z pudełkiem przekręconym o 90stopni (chyba że już nie musisz)

Lucassith
Cytat(ziomek_1 @ 22.09.2015, 17:15:59 ) *
Witam,

Ten sposob nie zadziala.

Problem jest np. kiedy magazyn (4,6) a pudelko (3,2), tutaj w rzeczywistosci wejdzie tylko 3 pudelka, a jezeli liczyc po polu powiezchni wejdze 4

X X X E
X X X E
X X X E
X X X E
X X X E
X X X E

gdzie x to znaczy pudelka
E - zostaje wolne (zmarnowane)


Włożysz 4 pudełka jeśli je obrócisz. Pytanie jest czy możesz je obracać?

Cytat
Odpowiedzi zawsze bedą dwie w zależności jak ułożysz pudełka.
- mierzysz pierwszy bok magazynu(np szerokosc gdzie amsz 4)
- potem patrzysz ile pudełek zmiesci sie na w szerokosci(jezeli ulozysz bokiem o szerokosci 3) czyli wyszlo ci 1 pudełko


W tym momencie możesz sprawdzić gdzie reszta z dzielenia boku magazynu przez bok pudełka jest mniejsza, przed czy po obróceniu. Wtedy będzie to bardziej optymalny sposób.

Pseudokod:

Kod
resztaZDzielenia = pierwszyBokMagazynu % pierwszyBokPaczki
Jeśli resztaZDzielenia > pierwszyBokMagazynu % drugiBokPaczki
       zamieńBokiPaczki
dzielenieCalkowitePierwszyBok = pierwszyBokMagazynu div pierwszyBokPaczki
dzielenieCalkowiteDrugiBok =  drugiBokMagazynu div drugiBokPaczki
iloscPaczek = dzielenieCalkowitePierwszyBok * DzielenieCalkowiteDrugiBok
poleZajetePrzezPaczki = iloscPaczek * pierwszyBokPaczki * drugiBokPaczki
poleMagazynu = pierwszyBokMagazynu * drugiBokMagazynu
pozostaleMiejsce = poleMagazynu - poleZajetePrzezPaczki


Nie jestem specjalistą w pseudokodzie ale jak czegoś nie rozumiesz to pisz proszę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.