Löytyisköhän kaavaa taikka ohjelma pätkää seuraavaan.
2 kpl 1000mm
5 kpl 1246mm
3 kpl 1340mm
6 kpl 4777mm
aihionmitta on 12m ja tarteis yhdistellä niin että hukkapala olisi mahdollisimman pieni. sahaus hukka noin 5mm. tossa esim lukuja. oikeasti niitä on tosi paljon
kiitokset
2 kpl 1000mm
5 kpl 1246mm
3 kpl 1340mm
6 kpl 4777mm
aihionmitta on 12m ja tarteis yhdistellä niin että hukkapala olisi mahdollisimman pieni. sahaus hukka noin 5mm. tossa esim lukuja. oikeasti niitä on tosi paljon
kiitokset
Vastaukset 6
Vanhimmat
Tässä olisi OpenOffice versio:
Sub Main
sahahukka=5
aihiopit=12000
dim sum as long
dim kaytetty as long
dim paras as long
dim rivi as integer
Sheet = thiscomponent.CurrentController.activesheet
svc = createUnoService( "com.sun.star.sheet.FunctionAccess" )
dim arg as variant
dim alue as object
alue = Sheet.getCellRangeByPosition( 1, 1, 1, 500 )
Arg = array(alue)
mx = svc.callFunction( "COUNT",Arg )-1
redim kpl(mx) as integer
redim mitat(mx) as integer
redim paraskpl(mx) as integer
redim x(mx) as integer
for j=0 to mx
kpl(j)=Sheet.getCellByPosition(0,j).Getvalue
mitat(j)=Sheet.getCellByPosition(1,j).Getvalue
Sheet.getCellByPosition(5 j,0).Setvalue(mitat(j))
next
Sheet.getCellByPosition(5 mx 1,0).Setstring("Yli")
rivi=0
do
paras=0
do 'aihion patkiminen
z=0
x(z)=x(z) 1
while x(z)> kpl(z)
x(z)=0
z=z 1
if z>mx then exit do
x(z)=x(z) 1
wend
sum=0
for j=0 to mx
sum=sum x(j)*mitat(j) sahahukka
next
if (sum>paras) and (sum
A-sarakkeessa on kappalemäärä ja B-sarakkeessa mitat.
Sub Optimoi()
sahahukka = 5
aihiopit = 12000
vasen = 4 'vastaustaulukon vasen reuna
Dim sum As Long
Dim kaytetty As Long
Dim paras As Long
Dim rivi As Integer
Dim mx As Integer
Dim mxtaul As Integer
Dim hukkayht As Long
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim z As Integer
Dim luku As Integer
Dim tupla As Boolean
mxtaul = 250
'oo Sheet = thiscomponent.CurrentController.activesheet
'oo Sheet.getCellRangeByName(chr(vasen 65) "1:IV" Trim(Str(mxtaul))).clearContents(1023)
Range(Chr(vasen 64) "1:IV" Trim(Str(mxtaul))).ClearContents
ReDim kpl(mxtaul) As Integer
ReDim mitat(mxtaul) As Integer
ReDim paraskpl(mxtaul) As Integer
ReDim x(mxtaul) As Integer
k = 0 'taulukon alustus, tuplien poisto
For j = 0 To mxtaul
'oo kpl(k) = Sheet.getCellByPosition(0 , j).Getvalue
kpl(k) = ActiveSheet.Cells(j 1, "A").Value
If kpl(k) = 0 Then
mx = k - 1
Exit For
End If
'oo luku = Sheet.getCellByPosition(1 , j).Getvalue
luku = ActiveSheet.Cells(j 1, "B").Value
If luku > aihiopit Then
q = MsgBox("Mitta liian pitkä", 0)
Range("B" Trim(Str(j 1))).Select
Exit Sub
End If
tupla = False
For i = 0 To j - 1
If mitat(i) = luku Then
kpl(i) = kpl(i) kpl(k)
tupla = True
Exit For
End If
Next
If Not tupla Then
mitat(k) = luku
'oo Sheet.getCellByPosition(vasen k , 0).Setvalue(luku)
ActiveSheet.Cells(1, vasen k).Value = luku
k = k 1
End If
Next
'oo Sheet.getCellByPosition(vasen mx 1 , 0).Setstring("Yli")
ActiveSheet.Cells(1, vasen mx 1).Value = "Yli"
rivi = 1 'oo =0
Do
paras = 0
Do 'aihion patkiminen
z = 0
x(z) = x(z) 1
While x(z) > kpl(z)
x(z) = 0
z = z 1
If z > mx Then Exit Do
x(z) = x(z) 1
Wend
sum = 0
For j = 0 To mx
sum = sum x(j) * (mitat(j) sahahukka)
Next
If (sum > paras) And (sum - sahahukka
Tervehdys. ohjelma toimii hyvin. Voisinko saada tähän ohjelmaan vielä valinta ruudun, johon voisi laittaa haluamansa mitan. Nythän se onnistuu tossa ohjelmassa muuttaa, mut olisi helpompaa ja nopeampaa vaihtaa mitta suoraan valintaruudussa.
kiitokset
soluun C5 pituus. Seuraava rivi dim-lauseiden jälkeen:
If Range("C5").Value > 0 Then aihiopit = Range("C5").Value
Kiitokset. Hyvin pelittää
Kiitokset. Homma toimii hyvin