Convertir VB6 vers le C++
Dernière réponse : dans Programmation
Bonjour à tous, voilà.. J'ai un programme en VB et j'aimerais le convertir en C++. Sachant que je ne connais absolument pas le C++, j'aimerais quelques conseils qui me permettra de convertir le fichier assez rapidement. Il existe des logiciels, mais ils ne sont pas forcement fiable.
Bref, voici le code source
Merci de votre aide.
Bref, voici le code source
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
Merci de votre aide.
Autres pages sur : convertir vb6 vers
Lassé par la pub ? Créez un compte
Citation :
J'ai pensé que le C++ permettait d'être plus rapide et donc de gagner du temps. Si tu souhaites gagner du temps, il serait probablement plus pertinent de le réécrire toi même en C++, et de repenser les algorithmes utilisés. Je doute sérieusement que passer par un langage intermédiaire supplémentaire lors de la compilation puisse améliorer les performances.
Je doute également de la capacité du programme à tourner pendant des années... C'est censé calculer quoi? Qu'est ce qu'il pourrait avoir à calculer pendant autant de temps?
Citation :
C'est mal les Goto?Extrêmement. C'est une très mauvaise pratique de programmation, dénoncée depuis l'avènement de la programmation structurée dans les années 70 : là par exemple, je suis incapable de dire ce que fait ton code. Des If/then/else et des boucles remplacent très avantageusement les goto, d'ailleurs.
En plus, il est nécessaire d'indenter le code, sauter des lignes (il n'y a habituellement qu'une seule instruction par ligne), et mettre des commentaires "utiles" sur ce que fait le programme; donner des noms de variables qui ont un sens, etc.
Citation :
Si tu souhaites gagner du temps, il serait probablement plus pertinent de le réécrire toi même en C++, et de repenser les algorithmes utilisés.Me reste plus qu'à apprendre le C et le C++ ^^
Citation :
Je doute également de la capacité du programme à tourner pendant des années... C'est censé calculer quoi? Qu'est ce qu'il pourrait avoir à calculer pendant autant de temps? Calcul de probabilité grâce au NP Complet... Calcul de plus de 420 dimensions.
Citation :
Extrêmement. C'est une très mauvaise pratique de programmation, dénoncée depuis l'avènement de la programmation structurée dans les années 70 : là par exemple, je suis incapable de dire ce que fait ton code. Des If/then/else et des boucles remplacent très avantageusement les goto, d'ailleurs.En plus, il est nécessaire d'indenter le code, sauter des lignes (il n'y a habituellement qu'une seule instruction par ligne), et mettre des commentaires "utiles" sur ce que fait le programme; donner des noms de variables qui ont un sens, etc.
Hum, d'accord!
Citation :
Me reste plus qu'à apprendre le C et le C++ ^^ Pas nécessairement, essaye de voir d'abord si il n'y a pas des parties qui peuvent être repensés pour aller plus vite: d'abord dans les algorithmes utilisés, puis dans la façon dont ils sont implémentés; regarde les sections qui prennent le plus de temps ou reviennent le plus souvent lors de l'exécution. Ce serait plus facile si le programme était plus lisible.
Citation :
Calcul de probabilité grâce au NP Complet... Calcul de plus de 420 dimensions.
Hmm, je n'ai pas compris ce que tu voulais dire. Calcul, okay, probabilité, d'accord, mais "grâce au NP Complet"? Que veux tu dire par là? Pour moi, NP-Complet signifie que la complexité de l'algorithme est polynomiale (donc le temps augmente beaucoup plus vite que la quantité de données à traiter) et qu'on ne connait pas de meilleure solution. Et je ne vois pas trop ce que peut signifier "calcul de plus de 420 dimensions".
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumC convertir string char
- ForumC convertir string en char
- ForumVb6
- ForumC convertir char en string
- articlesC convertir un nombre en toute lettre
- ForumC convertir binaire decimal
- ForumC - convertir char en int
- ForumC convertir char minuscule en majuscule
- ForumC convertir int en string
- ForumC convertir string en int
- Voir plus