Bonjour à tous,

voilà, j'ai un exercice où je dois comparer des points 1 à 1, calculer la distance entre eux, retourner la distance max puis donner la paire de points qui est concernée.

ex: prenons 5 points (a, b, c, d et e)
le programme doit comparer:
a avec b
a avec c
a avec d
a avec e
puis
b avec c
b avec d
b avec e
...

voici mon code correspondant à cet exo (qui ne marche pas):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
'code du test
Sub td2_4()
    Dim t1(5) As point
    Call saisie_point(t1(0))
    Call saisie_point(t1(1))
    Call saisie_point(t1(2))
    Call saisie_point(t1(3))
    Call saisie_point(t1(4))
    Call copy_point(t1, 5)
End Sub
 
'saisie d'un point
Sub saisie_point(ByRef p As point)
    p.x = InputBox("Point 1: Entrer x: ")
    p.y = InputBox("Point 1: Entrer y:")
End Sub
 
'fonction qui permet de connaitre la distance entre 2 points
Function distance(p1 As point, p2 As point) As Double
    Dim result As Double
    result = Sqr((p2.x - p1.x) ^ 2 + (p2.y - p1.y) ^ 2)
    distance = result
End Function
 
'copie du tableau de point dans un nouveau tableau et recherche du max
Sub copy_point(t1() As point, ByVal nbelement As Integer)
    Dim tc() As point
    Dim i As Integer
    Dim j As Integer
    Dim n As Integer
    Dim d As Integer
    Dim max As Integer
 
    max = 0
    n = 0
 
    For i = 0 To nbelement - 1
        tc(i) = t1(i)    'y a un problème ici:aie:
    Next i
 
    For i = 0 To nbelement - 1
        For j = n + 1 To nbelement - 2
            Call distance(tc(j), t1(i))
            d = distance(tc(j), t1(i))
                If d > max Then
                    max = d
                    MsgBox (max)
                End If
        Next j
        n = n + 1
    Next i
    MsgBox ("le max est de :" & max)
End Sub