Besoin d'aide pour transformer prg visual basic

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jeftaxi
Messages : 2
Inscription : ven. 14/avr./2023 19:52

Besoin d'aide pour transformer prg visual basic

Message par jeftaxi »

Bonjour à tous et merci de m'accepter sur le forum.

J'ai un programme que je n'arrive pas à transformer complètement en PureBasic. Alors si quelqu'un parmi vous peut m'aider, milles merci.

voici le programme :

Code : Tout sélectionner

Dim chosenNumbers(5) As Integer
chosenNumbers(1) = 1
chosenNumbers(2) = 2
chosenNumbers(3) = 3
chosenNumbers(4) = 4
chosenNumbers(5) = 5

Dim numSequences As Integer = 200
Dim sequenceLength As Integer = 5
Dim minMatches As Integer = 4
Dim reducedNumSequences As Integer = 10

Dim sequences(numSequences, sequenceLength) As Integer
For i As Integer = 1 To numSequences
    For j As Integer = 1 To sequenceLength
        sequences(i, j) = CInt(Math.Floor((10 - 1 + 1) * Rnd())) + 1
    Next j
Next i

Dim hasMatch As Boolean = False
For i As Integer = 1 To numSequences
    Dim matchCount As Integer = 0
    For j As Integer = 1 To sequenceLength
        For k As Integer = 1 To 5
            If sequences(i, j) = chosenNumbers(k) Then
                matchCount += 1
            End If
        Next k
    Next j
    If matchCount >= minMatches Then
        hasMatch = True
    End If
Next i

If Not hasMatch Then
    ReDim Preserve sequences(numSequences + 1, sequenceLength)
    For i As Integer = 1 To minMatches
        sequences(numSequences + 1, i) = chosenNumbers(i)
    Next i
    For i As Integer = minMatches + 1 To sequenceLength
        sequences(numSequences + 1, i) = CInt(Math.Floor(((10 - minMatches) - (minMatches + 1) + 1) * Rnd())) + (minMatches + 1)
    Next i
End If

Dim reducedSequences(reducedNumSequences, sequenceLength) As Integer
For i As Integer = 1 To reducedNumSequences
    Dim sequenceIndex As Integer = CInt(Math.Floor(((numSequences + IIf(hasMatch, 0, 1)) - 1 + 1) * Rnd())) + 1
    For j As Integer = 1 To sequenceLength
        reducedSequences(i, j) = sequences(sequenceIndex, j)
    Next j
Next i

For i As Integer = 1 To reducedNumSequences
    For j As Integer = 1 To sequenceLength
        Console.Write(reducedSequences(i, j))
    Next j
    Console.WriteLine()
Next i
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin d'aide pour transformer prg visual basic

Message par Ar-S »

Bonjour,

Math.Floor() arrondit le résultat précédent à la valeur inférieure (ressemble à la commande Round en PB)
CInt() convertit le résultat précédent en un entier (équivaut à int en PB)

Pour le reste ce sont des tableaux et des boucles.
Regarde Dim et ReDim dans la doc, les boucles

Poste déjà ce que tu as fait en PB.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Besoin d'aide pour transformer prg visual basic

Message par Mesa »

Il y a un problème avec le redim, il faut inverser un tableau.

Code : Tout sélectionner

; Par défaut les variables sont des integer

Procedure IIf(hasMatch, V, F)
	If hasMatch
		ProcedureReturn V
	Else
		ProcedureReturn F
	EndIf
EndProcedure


Dim chosenNumbers(5)
chosenNumbers(1) = 1
chosenNumbers(2) = 2
chosenNumbers(3) = 3
chosenNumbers(4) = 4
chosenNumbers(5) = 5

numSequences = 200
sequenceLength = 5
minMatches = 4
reducedNumSequences = 10
; CInt arrondit  (arrondi du banquier) à l’entier le plus proche au lieu de tronquer la partie fractionnelle des nombres
Dim sequences( sequenceLength,numSequences)
For i = 1 To numSequences
	For j = 1 To sequenceLength
		rd.f=Random(1000000,0)/1000000
		While rd=1.0
			rd=Random(1000000,0)/1000000
		Wend
		sequences(j, i) = Round((Round((10 - 1 + 1) * Rd,#PB_Round_Down)),#PB_Round_Nearest) + 1
	Next j
Next i


hasMatch.b = #False
For i = 1 To numSequences
	matchCount = 0
	For j = 1 To sequenceLength
		For k = 1 To 5
			If sequences(j, i) = chosenNumbers(k)
				matchCount + 1
			EndIf
		Next k
	Next j
	If matchCount >= minMatches
		hasMatch = True
	EndIf
Next i

If Not hasMatch
	ReDim sequences(sequenceLength,numSequences + 1)
	For i = 1 To minMatches
		sequences( i,numSequences + 1) = chosenNumbers(i)
	Next i
	For i = minMatches + 1 To sequenceLength
		rd.f=Random(1000000,0)/1000000
		While rd=1.0
			rd=Random(1000000,0)/1000000
		Wend
		sequences(i,numSequences + 1) = Round(Round(((10 - minMatches) - (minMatches + 1) + 1) * Rd,#PB_Round_Down),#PB_Round_Nearest) + (minMatches + 1)
	Next i
EndIf

Dim reducedSequences(reducedNumSequences, sequenceLength)
For i = 1 To reducedNumSequences
	rd.f=Random(1000000,0)/1000000
	While rd=1.0
		rd=Random(1000000,0)/1000000
	Wend
	sequenceIndex = Round(Round(((numSequences + IIf(hasMatch, 0, 1)) - 1 + 1) * Rd,#PB_Round_Down),#PB_Round_Nearest) + 1
	For j = 1 To sequenceLength
		reducedSequences(i, j) = sequences(j,sequenceIndex)
	Next j
Next i

OpenConsole()
For i = 1 To reducedNumSequences
	For j = 1 To sequenceLength
		Print(Str(reducedSequences(i, j)))
	Next j
	PrintN("")
Next i
R$ = Input()
M.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Besoin d'aide pour transformer prg visual basic

Message par SPH »

jeftaxi a écrit : ven. 14/avr./2023 19:58 Bonjour à tous et merci de m'accepter sur le forum.

J'ai un programme que je n'arrive pas à transformer complètement en PureBasic. Alors si quelqu'un parmi vous peut m'aider, milles merci.

voici le programme :
Demande a shadow. Il a fait un exceeeelent convertisseur VB to PB :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
jeftaxi
Messages : 2
Inscription : ven. 14/avr./2023 19:52

Re: Besoin d'aide pour transformer prg visual basic

Message par jeftaxi »

Merci beaucoup à tous pour vos réponses et excellente soirée.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Besoin d'aide pour transformer prg visual basic

Message par SPH »

Un " '''site ''' " dédié a VB to PB (par shadow) :

viewtopic.php?p=204559#p204559

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Besoin d'aide pour transformer prg visual basic

Message par Shadow »

SPH a écrit : sam. 15/avr./2023 9:43
jeftaxi a écrit : ven. 14/avr./2023 19:58 Bonjour à tous et merci de m'accepter sur le forum.

J'ai un programme que je n'arrive pas à transformer complètement en PureBasic. Alors si quelqu'un parmi vous peut m'aider, milles merci.

voici le programme :
Demande a shadow. Il a fait un exceeeelent convertisseur VB to PB :idea:
Oui mais seul problème, mon convertisseur de code VB vers PB ne fonctionne que pour du code pour générer une fenêtre et ces gadget, pas pour du code VB a proprement parlé !
Merci sinon.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre