Avatar billede jthyge Mester
01. november 2018 - 17:08 Der er 6 kommentarer og
1 løsning

Fordele forskellige emner efter vægt, så sum bliver inden for en tolerance?

Hej

Jeg har en skoleopgave, hvor jeg skal lavet et program, der kommer emner af 125-225g i 4 poser, hver pose skal ende med at veje 2000-2050g.

Jeg kan fint få emner i poserne, og ramme vægten nogenlunde ved hjælp af nogle IF sætninger.

Men jeg kan ikke regne ud, hvordan jeg sikre mig at posen altid ender med en vægt på 2000-2050g.

Ledetråde modtaget gerne, så jeg kan arbejde mig hen mod en god løsning... :-)

/PS jeg arbejder i Struktureret Tekst, som minder meget om C++.
Avatar billede bertelbrander Novice
02. november 2018 - 01:52 #1
Put emner i alle 4 poser, til de i gennemsnit har mellem 2000 og 2050 gram hver.
Nu vil der så være nogle poser der vejer for meget, og nogle der vejer for lidt. Tag derpå et emne fra en pose der vejer for meget, og byt det med et emne i en der vejer for lidt, på en sådan måde, at de begge kommer tættere på idealvægten. Dvs tag en tung ting fra den der vejer for meget, og byt med et lettere emne fra den pose der vejede for lidt.
Fortsæt indtil alle poser har emner med passende vægt.
Avatar billede claes57 Ekspert
02. november 2018 - 10:32 #2
evt start med at sortere alle dimser efter vægt, og placer den tungeste i pose1, derefter  arbejd ned gemmen dimse-rækken skiftevis i poserne (2341234 osv) - hvis en posevægt overstiger 2050g, så springes den over i resten af uddelingen.
derefter bytte jf #1
Avatar billede jthyge Mester
02. november 2018 - 16:08 #3
Jeg kan se at jeg mangler lidt oplysninger i mit spørgsmål.

Emnerne kommer kørende på et bånd, hvor de bliver vejet.
Derefter kører de forbi 4 udskubbere, der skal fordele dem i poserne. Når en pose når 2000-2050 g, kommer det en ny pose på.

Det er altså ikke muligt at tage emner op af poserne, eller veje dem på forhånd.
Man kender kun vægten på det emne der er på båndet.

Måden jeg har løst det på indtil vider, er at jeg kommer emner i posen indtil den den vejer max 1875g, og så skal næste emne veje under 175g. Så kommer det til at passe i det fleste tilfælde. Bare ikke de tilfælde hvor den lander for langt under de 1875 i førsten omgang, så når den ikke minimum vægt.

Men det er jo ikke helt godt nok. Jeg skal nok finde en anden måde at gribe det an på.
Avatar billede Hans Mester
02. november 2018 - 22:34 #4
Inden du putter emnet i posen, så sikrer du dig at det 1) opfylder posekravet eller 2) der som minimum er plads (125 + x) til et emne mere. Hvis hverken 1 eller 2 opfyldes, så spring emnet over.
Avatar billede bertelbrander Novice
03. november 2018 - 00:34 #5
Jeg er ret enig med Hans, fyld en pose indtil der mangler netop et emne. Men jeg tror du skal have forskellige grænser, for forskellige poser. fx (125 + x) for den første (175 + x) for den næste, osv.
Gad vide om der er en løsning der vil garantere at det altid vil gå op.
Avatar billede jthyge Mester
03. november 2018 - 08:45 #6
Hej igen..
Tak for jeres svar.
Jeg tror jeg har løst det, stort set på samme måde som Hans foreslår.
Der må fyldes emner i til en grænse, hvorefter posevægt + emne vægt skal ramme inden for 2000-2050g
Avatar billede Hans Mester
03. november 2018 - 08:48 #7
Jeg har testet fremgangsmåden. Jeg rammer 95% effektivitet. Dvs. 5% af emnerne ruller videre forbi alle 4 poser.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester