Bonjour, j'aimerais convertir un code créé en VB6 vers le C++, malheureusement, je n'y connais rien en C++, j'ai essayé de trouver des logiciels, mais aucun n'est fiable à 100%. J'aurais voulu une peu d'aide, merci!
[code]Option Explicit: Option Base 1
Sub calculs(): Unload Form1: Dim n As Integer, fs As Object, a As String: n = Form1.n: a = Right("000" & CStr(n), 3)
Set fs = CreateObject("Scripting.FileSystemObject"): If fs.folderexists("c:\Test\hyperplan\" & a) Then MsgBox ("Dossier " & a & " existant::Le détruire - avec son contenu- avant de refaire les calculs !!"): Exit Sub Else MkDir "c:\Test\hyperplan\" & a: MsgBox ("Démarrage:: Clic sur OK ")
Dim supp() As Byte, k As Integer, tmp As Integer, x As Integer, b As String: x = n - 1: If x > 25 Then x = 25
Dim i As Integer, ix As Integer, j As Integer, r As Integer, pro As Integer, sig As Integer, ssp As String, ssn As String, ss As String, det() As Integer, snt() As Integer, res() As Integer: ReDim det(n): ReDim snt(n): ReDim res(n)
For k = 1 To x: b = Right("00" & CStr(k), 2): Erase supp: ReDim supp(n - 1, n): Open "c:\Test\hyperplan\" & a & "\" & b & ".txt" For Output As #1: Close #1
For tmp = 1 To k: supp(1, tmp) = 1: Next tmp: ix = 1
cc: For i = ix + 1 To n - 1: For j = 1 To n: supp(i, j) = supp(i - 1, j): Next j
tmp = 0: For j = n To 1 Step -1: If supp(i, j) = 0 Then tmp = j: GoTo jj
If tmp <> 0 Then supp(i, j) = 0: supp(i, tmp) = 1: GoTo rr
jj: Next j: ix = i - 1: GoTo ff
rr: For j = tmp + 1 To n: If supp(i, j) = 1 Then GoTo jjj
For r = j + 1 To n: If supp(i, r) = 1 Then supp(i, j) = 1: supp(i, r) = 0: GoTo jjj
Next r
jjj: Next j
Next i: For i = 1 To n: det(i) = i: Next i: sig = 1: pro = 0
aa: For i = 2 To n: sig = sig * supp(i - 1, det(i)): Next i: pro = pro + sig
For i = n - 1 To 1 Step -1: sig = n + 1: For j = i + 1 To n: If det(j) > det(i) And det(j) < sig Then sig = det(j): tmp = j
Next j: If sig < n + 1 Then sig = det(i): det(i) = det(tmp): det(tmp) = sig: tmp = i + 1: GoTo ran
Next i: res(n) = pro: GoTo bb
ran: If tmp = 2 Then res(det(1) - 1) = pro: pro = 0
For i = 1 To n: If i < tmp Then GoTo rani
For j = i + 1 To n: If j < tmp Then GoTo ranj
If det(j) < det(i) Then sig = det(i): det(i) = det(j): det(j) = sig
ranj: Next j
rani: Next i: sig = 1: For i = 1 To n: snt(i) = det(i): Next i: For i = 1 To n - 1
If snt(i) <> i Then
For j = i + 1 To n: If snt(j) = i Then snt(j) = snt(i): sig = -sig: GoTo sigi
Next j: End If
sigi: Next i: GoTo aa
bb: tmp = 0: For i = 1 To n: If res(i) = 0 Then GoTo ee
If tmp = 0 Then tmp = Abs(res(i)) Else r = Abs(res(i)): sig = (tmp + r + Abs(tmp - r)) / 2: pro = (tmp + r - Abs(tmp - r)) / 2: Do Until pro = 0: r = pro: pro = sig Mod pro: sig = r: Loop: tmp = r
ee: Next i: If tmp = 0 Then ix = n - 1: GoTo ff
For i = 1 To n: res(i) = res(i) / tmp: If Abs(res(i)) > 675 Then MsgBox ("Absolue > 675 !! M'avertir !! "): Exit Sub
Next i: ssp = "": ssn = "": For i = 1 To n: If res(i) = 0 Then ssp = ssp & "ZZ": ssn = ssn & "ZZ"
If res(i) > 0 Then
r = res(i) Mod 26: If r = 0 Then ss = "z" Else ss = Chr(64 + r)
r = (res(i) - r) / 26: If r = 0 Then ssp = ssp & "z" & ss Else ssp = ssp & Chr(64 + r) & ss
r = res(i) Mod 26: If r = 0 Then ss = "z" Else ss = Chr(96 + r)
r = (res(i) - r) / 26: If r = 0 Then ssn = ssn & "z" & ss Else ssn = ssn & Chr(96 + r) & ss
End If
If res(i) < 0 Then
r = (-res(i)) Mod 26: If r = 0 Then ss = "z" Else ss = Chr(96 + r)
r = (-res(i) - r) / 26: If r = 0 Then ssp = ssp & "z" & ss Else ssp = ssp & Chr(96 + r) & ss
r = (-res(i)) Mod 26: If r = 0 Then ss = "z" Else ss = Chr(64 + r)
r = (-res(i) - r) / 26: If r = 0 Then ssn = ssn & "z" & ss Else ssn = ssn & Chr(64 + r) & ss
End If: Next i: Open "c:\Eternity\hyperplan\" & a & "\" & b & ".txt" For Input As #1: If EOF(1) Then Close #1: GoTo tt
Do Until EOF(1): Line Input #1, ss: If ss = ssp Or ss = ssn Then Close #1: ix = n - 1: GoTo ff
Loop: Close #1
tt: Open "c:\Eternity\hyperplan\" & a & "\" & b & ".txt" For Append As #1: Print #1, ssp: Close #1: ix = n - 1
ff: tmp = 0: For j = n To 1 Step -1: If supp(ix, j) = 0 Then tmp = j: GoTo supj
If tmp <> 0 Then supp(ix, j) = 0: supp(ix, tmp) = 1: GoTo supr
supj: Next j: If ix > 1 Then ix = ix - 1: GoTo ff Else GoTo fin
supr: For j = tmp + 1 To n: If supp(ix, j) = 1 Then GoTo supjj
For r = j + 1 To n: If supp(ix, r) = 1 Then supp(ix, j) = 1: supp(ix, r) = 0: GoTo supjj
Next r
supjj: Next j: GoTo cc
fin: Next k: MsgBox ("TERMINE !"): End Sub
[/code]