PDA

View Full Version : [C] potrebbe essere una ricorsione ma non ne sono sicuro


misterx
07-05-2020, 16:32
Ho due colonne con dei numeri e devo renderle uguali sottraendo una certa quantità agendo nel modo seguente:

se (r1,c1) > (r1,c2) fai qualcosa
se (r1,c1)+(r2,c1) > (r2,c2) fai qualcosa
se (r1,c1)+(r2,c1)+(r3,c1) > (r3,c2) fai qualcosa
se (r1,c1)+(r2,c1)+(r3,c1)+(r4,c1) > (r4,c2) fai qualcosa


c1 c2
---------------------
r1 0 0
r2 0 0
r3 0 0
r4 0 0
r5 256 256
r6 256 256
r7 128 384
r8 512 512
r9 256 640
r10 256 768
r11 512 768
r12 128 768
r13 256 1024
r14 256 1024
r15 128 1152
r16 512 1280
r17 256 1408
r18 256 1536
r19 512 1536
r20 128 1536


questo è il risultato che vorrei ottenere, ovviamente l'ho calcolato a mano


c1 c2
---------------------
r1 0 0
r2 0 0
r3 0 0
r4 0 0
r5 256 256
r6 0 256 difatti 256 + 0 = 256
r7 128 384 difatti 256 + 0 + 128 = 384
r8 128 512 difatti 256 + 128 + 128 = 512
r9 128 640 difatti 256 + 128 + 128 + 128 = 640
r10 128 768 difatti 256 + 128 + 128 + 128 + 128 = 768
r11 0 768 ....... etc.....
r12 0 768
r13 256 1024
r14 0 1024
r15 128 1152
r16 128 1280
r17 128 1408
r18 128 1536
r19 0 1536
r20 0 1536

misterx
08-05-2020, 08:11
scusate ho risolto col visual basic di excel, ora devo trasformare il codice in C


Sub ricalcola()

Call risomma

For i = 2 To 44
If Cells(i, "N") > Cells(i, "M") Then
Cells(i, "L") = Cells(i, "L") - 1
Call risomma
i = 2
End If

If Cells(i, "N") > Cells(i, "M") Then
Cells(i, "L") = Cells(i, "L") + 1
Call risomma
i = 2
End If
Next i

End Sub

Function risomma()
For i = 2 To 44
Cells(i, "N") = Cells(i, "L") + Cells(i - 1, "N")
Next i
End Function






L M N
0 0 0
512 512 512
256 768 768
512 1280 1280
256 1536 1536
384 1920 1920
128 2048 2048
128 2176 2176
128 2304 2304
256 2560 2560
128 2688 2688
256 2944 2944
0 2944 2944
256 256 3200
128 384 3328
256 640 3584
128 768 3712
256 1024 3968
128 1152 4096
256 1408 4352
128 1536 4480
256 1792 4736
128 1920 4864
256 2176 5120
128 2304 5248
256 2560 5504
128 2688 5632
256 2944 5888