Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Program do magazynowania.
ziomek_1
post 21.09.2015, 22:36:08
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Pyton_000
post 22.09.2015, 10:50:39
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
Go to the top of the page
+Quote Post
ziomek_1
post 22.09.2015, 16:15:59
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 11.04.2013

Ostrzeżenie: (0%)
-----


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)

Ten post edytował ziomek_1 22.09.2015, 16:16:40
Go to the top of the page
+Quote Post
prz3kus
post 23.09.2015, 10:36:46
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)

Go to the top of the page
+Quote Post
Lucassith
post 23.09.2015, 10:40:55
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 21.09.2015

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował Lucassith 23.09.2015, 20:23:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:56