oui ça marche maintenant , l'internet est devenu un truc indispensable

bon voici un deuxième jet ,
le principe , je transforme d'abord le tableau en une string (qui est en fait un tableau a une dimension )
ensuite je prends le chiffre a trouver , et je soustrais chacun des éléments du tableau un par un a ce chiffre a trouver.... si cet element est plus petit que le chiffre a trouver.. bien sur... j’économise ainsi du temps de recherche
a chaque fois ça me donne un résultat ,
je regarde simplement si ce résultat est présent dans la String avec FindString()
de meme , je ne prends pas en compte le doublon représenté par le résultat et la somme a trouver , c'est pourquoi il n'affichera pas [4;4]
puisque mon tableau de toute façon ne contient qu'un seul "4" ...

exemple le chiffre a trouver est 8
je prends le premier element du tableau (mettons
3) , je regarde s'il est plus petit que 8
si c'est le cas , je soustrais l'element
3 de 8 ce qui me donne un resultat (
5)... c'est ce resultat que je recherche dans tout le tableau (la string)
si je le trouve , c'est le complement qu'il faut afficher avec l'element
3et j'affiche donc "[ element
(3) ;resultat(
5) ] ======> "forme la somme a trouver = 8"
Code:
;***********************************************
;Titre :*bidouille
;Auteur : Zorro
;Date :06/04/2018
;Heure :09:51:20
;Version Purebasic : PureBasic 5.62 (Windows - x86)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune
;***********************************************
;soit un tableau rempli de nombres positifs non triés,
dim tab(1000)
for i=1 to 999
Tab(i)=i
Next i
RandomizeArray(Tab() )
; mise en string du tableau pour recherche futur
for i=1 to 999
chaine.s= chaine.s+str(Tab(i))+","
Next i
; pour verifier le contenu du tableau activez ceci :
; For i= 1 to 999
; debug Tab(i)
; Next i
; ou ça :
;debug chaine.s
Somme_a_trouver=8
;trouver la paire qui correspond à une somme donnée en O(n)...
; on recherche
For x=1 to 999 ; <<<<<<<<<<<<<<<<< une seule boucle !!
A=Tab(x)
If A<Somme_a_trouver
temp=(Somme_a_trouver-A)
If Mod(temp,1)=0 and A<>int(temp)
If findstring(chaine.s,str(temp))
Debug " la paire : "+"["+str(A)+";"+str(Temp)+"]"+" forme la somme a trouver ="+str(Somme_a_trouver)
Endif
Endif
Endif
Next x