![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
w twoim [przypadku wystarczy sprawdzić czy wymiary pudełka zą < od wymiarów magazynu, obliczyć powierzchnię magazynu, pudełka, dzielenie i gotowe.
Ten post edytował Pyton_000 22.09.2015, 10:50:53 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 11.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
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) Ten post edytował ziomek_1 22.09.2015, 16:16:40 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 21.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
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ę. Ten post edytował Lucassith 23.09.2015, 20:23:04 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:56 |