QBasic Trouver le triangle a la plus grande S
Résolu
SmErT
Messages postés
93
Statut
Membre
-
SmErT Messages postés 93 Statut Membre -
SmErT Messages postés 93 Statut Membre -
Salut a tous.
Voilà le problème.
On donne un nombre de points dans un repaire cartésien A, B, C, D...
Il faut trouver la surface de tous les triangles possible calculer la surface et dire le quelle est le plus grand on affichant ces coordonner et sa surfsce.
Mon plus grand problème est de faire une table genre
ABC
ABD
ACD
BCD
Pas ABC ACB CBA car c'est la même chose
A D C
|x,y | x,y| x,y |aire1
Puis de comparer le résultat avec la fonction max et afficher le les coordonne est le résultat de la surface maximal.
si vous avez d'autre idée n'hésiter pas
merci.
Voilà le problème.
On donne un nombre de points dans un repaire cartésien A, B, C, D...
Il faut trouver la surface de tous les triangles possible calculer la surface et dire le quelle est le plus grand on affichant ces coordonner et sa surfsce.
REM triangle
INPUT "n="; n
IF n < 3 THEN
PRINT "avec le nombre de point que vous avez donne vous ne pouvez pas avoir de triangle"
ELSE
'TRIANGLE = prob(n)
'PRINT "nous avons une probabilité de "; TRIANGLE; "triangle avec "; n; " de points."
END IF
FUNCTION g_point ()
m = 2
RANDOMIZE TIMER
DIM a(n, m)
FOR i = 1 TO n
FOR j = 1 TO m
a(i, j) = (RND * 10) ////génère une table de point avec des nombre aléatoire
NEXT j
NEXT i
END FUNCTION
'FUNCTION CalculAire (Ax, Ay, Bx, By, Cx, Cy)
'CalculAire = ABS((Ax * (By - Cy) + Bx * (Cy - Ay) + Cx * (Ay - By)) / 2) /////trouve la surface avec ses coordonne.
'CalculAire = 1 / 2 * ABS((Ax * Cy) - (Ax * By) + (Bx * Ay) - (Bx * Cy) + (Cx * By) - (Cx * Ay))
'END FUNCTION
FUNCTION prob (n)
F = 1
G = 6
H = 1
l = n - 3
FOR i = 1 TO n ///////////// calque le nombre des triangles possible
F = F * i
NEXT i
FOR i = 1 TO l
H = H * i
NEXT i
prob = F / (H * G)
END FUNCTION
Mon plus grand problème est de faire une table genre
ABC
ABD
ACD
BCD
Pas ABC ACB CBA car c'est la même chose
A D C
|x,y | x,y| x,y |aire1
Puis de comparer le résultat avec la fonction max et afficher le les coordonne est le résultat de la surface maximal.
INPUT "max elements"; n
DIM A(n)
max = A(1)
FOR i = 1 TO n
IF A(i) > max THEN max = A(i)
NEXT i
PRINT "Max="; max
END
si vous avez d'autre idée n'hésiter pas
merci.
A voir également:
- QBasic Trouver le triangle a la plus grande S
- Trouver adresse mac - Guide
- Qbasic - Télécharger - Édition & Programmation
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
- Ou trouver la corbeille - Guide
6 réponses
Bonjour,
Ce petit programme te construit une tables de triangles
En faisant varier n, tu verras s'afficher les sommets des triangles.
Tu peux t'en inspirer pour la suite.
Ce petit programme te construit une tables de triangles
En faisant varier n, tu verras s'afficher les sommets des triangles.
Tu peux t'en inspirer pour la suite.
DECLARE SUB sommets (n AS INTEGER) DIM SHARED triangle AS INTEGER DIM SHARED tableTriangles(1000, 3) AS INTEGER CLS sommets (4) PRINT PRINT "Nombre de triangles : " ; STR$(triangle) END ' SUB sommets (n AS INTEGER) DIM i AS INTEGER, j AS INTEGER, k AS INTEGER triangle = 0 FOR i = 1 TO n - 2 FOR j = i + 1 TO n - 1 FOR k = j + 1 TO n triangle = triangle + 1 tableTriangles(triangle, 1) = i tableTriangles(triangle, 2) = j tableTriangles(triangle, 3) = k PRINT STR$(i); " "; STR$(j); " "; STR$(k) NEXT k NEXT j NEXT i END SUB
salut.
dite comment je peux générée çà ?
merci.
dite comment je peux générée çà ?
si j'ai a b c abc ------------------------ si j'ai a b c d abc abd acd bcd ------------------------ si j'ai a b c d e abc abd abe acd ace ade bcd bce bde cde . . . ext
merci.
Salut.
Donc voilà, pour ne pas dire que j'ai ne rien fais et que j'attente de vous une repense toute cuite.
Mon problème c'est dans la partie ou ont calcule la surface de triangle, le prog prend tous les cas possible. Avec n point il fait n !/3 !
Mais moi je cherche que n !/((n-3)1*3 !)
Par exemple :
Pour 3 point ?un triangle
Pour 4 point ? 4 triangle
Pour 5 point ? 10 triangle ext
Je cherche le moine de filtrer les cas qui m'intéresse pas.
merci
Donc voilà, pour ne pas dire que j'ai ne rien fais et que j'attente de vous une repense toute cuite.
CLS
REM triqngle
OPTION BASE 1 'Tout les tableaux commence par 1 et non 0
INPUT "n="; n
RANDOMIZE TIMER
DIM a(n, 2)
PRINT
PRINT "------------------------Generateur coordonnées-------------------------------"
PRINT
FOR i = 1 TO n
FOR j = 1 TO 2
a(i, j) = INT(RND * 50)
PRINT a(i, j),
NEXT j
PRINT
NEXT i
PRINT
PRINT "---------------Calcule de la longueur des cotes de triangle--------------------"
PRINT
PRINT w
w = probligne(n)
longligne = 0
DIM ligne(w, 5)
m = 0
FOR i = 1 TO n - 1
FOR j = i + 1 TO n
m = m + 1
ligne(m, 1) = a(i, 1)
ligne(m, 2) = a(i, 2)
ligne(m, 3) = a(j, 1)
ligne(m, 4) = a(j, 2)
longligne = SQR((ligne(m, 3) - ligne(m, 1)) ^ 2 + (ligne(m, 4) - ligne(m, 2)) ^ 2)
ligne(m, 5) = longligne
PRINT ligne(m, 1), ligne(m, 2), ligne(m, 3), ligne(m, 4), ligne(m, 5)
NEXT j
NEXT i
PRINT
PRINT "--------------------Calcule de la surface de triangle -----------------------"
PRINT
't = prob
DIM triangle(100, 4)
DIM o AS INTEGER, p AS INTEGER, q AS INTEGER
h = 0
z = 0
FOR o = 1 TO n - 2
FOR p = o TO n - 1
FOR q = p + 1 TO n
h = h + 1
PRINT ligne(o, 5), ligne(p, 5), ligne(q, 5)
'triangle(h, 1) = ligne(o, 5)
'triangle(h, 2) = ligne(p, 5)
'triangle(h, 3) = ligne(q, 5)
'z = ((triangle(h, 1) + triangle(h, 2) + triangle(h, 3)) / 2)
'PRINT z
'striangle = SQR(z * (z - triangle(h, 1)) * (z - triangle(h, 2)) * (z - triangle(h, 3)))
'triangle(h, 4) = striangle
'PRINT triangle(h, 1), triangle(h, 2), triangle(h, 3), triangle(h, 4)
NEXT q
NEXT p
NEXT o
'FUNCTION probtriangle(n)
'F = 1
'G = 6
'h = 1
'l = n - 3
'FOR i = 1 TO n
' F = F * i
'NEXT i
'FOR i = 1 TO l
' h = h * i
'NEXT i
probtriangle = F / (l * G)
'END FUNCTION
FUNCTION probligne (n)
F = 1
G = 2
h = 1
l = n - 2
FOR i = 1 TO n
F = F * i
NEXT i
FOR i = 1 TO l
h = h * i
NEXT i
probligne = F / (l * G)
END FUNCTION
Mon problème c'est dans la partie ou ont calcule la surface de triangle, le prog prend tous les cas possible. Avec n point il fait n !/3 !
Mais moi je cherche que n !/((n-3)1*3 !)
Par exemple :
Pour 3 point ?un triangle
Pour 4 point ? 4 triangle
Pour 5 point ? 10 triangle ext
Je cherche le moine de filtrer les cas qui m'intéresse pas.
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
FOR p = o TO n - 1
c'est une erreur, il faut mettre FOR p = o+1 TO n - 1
une autre remarque, DIM triangle(100, 4)
normalement le tableau triangle est un tableau d'entiers qui representent les index des trois sommets des triangles, alors on devrait ecrire:
DIM triangle(100, 3) as integer
Les aires des triangles sont des réèls et devraient être stockées si besoin dans un tableau de réèls.
Voilà la partie calcul d'aire remaniée:
FOR p = o TO n - 1
c'est une erreur, il faut mettre FOR p = o+1 TO n - 1
une autre remarque, DIM triangle(100, 4)
normalement le tableau triangle est un tableau d'entiers qui representent les index des trois sommets des triangles, alors on devrait ecrire:
DIM triangle(100, 3) as integer
Les aires des triangles sont des réèls et devraient être stockées si besoin dans un tableau de réèls.
Voilà la partie calcul d'aire remaniée:
PRINT
PRINT "--------------------Calcule de la surface de triangle -----------------------"
PRINT
't = prob
DIM triangle(1000, 3) AS INTEGER
DIM o AS INTEGER, p AS INTEGER, q AS INTEGER
Dim h AS INTEGER, z AS DOUBLE
h = 0 'index triangle
z = 0 'aire triangle
FOR o = 1 TO n - 2
FOR p = o + 1 TO n - 1
FOR q = p + 1 TO n
h = h + 1
triangle(h, 1) = o
triangle(h, 2) = p
triangle(h, 3) = q
PRINT "Triangle "; LTRIM$(STR$(h)); " (";
PRINT "P"; LTRIM$(STR$(triangle(h, 1))); "-";
PRINT "P"; LTRIM$(STR$(triangle(h, 2))); "-";
PRINT "P"; LTRIM$(STR$(triangle(h, 3))); ")"
xA = a(triangle(h, 1), 1): yA = a(triangle(h, 1), 2)
xB = a(triangle(h, 2), 1): yB = a(triangle(h, 2), 2)
xC = a(triangle(h, 3), 1): yC = a(triangle(h, 3), 2)
PRINT "P"; LTRIM$(STR$(triangle(h, 1)));
PRINT "("; STR$(xA); ";"; STR$(yA); ") ";
PRINT "P"; LTRIM$(STR$(triangle(h, 2)));
PRINT "("; STR$(xB); ";"; STR$(yB); ") ";
PRINT "P"; LTRIM$(STR$(triangle(h, 3)));
PRINT "("; STR$(xC); ";"; STR$(yC); ")"
z = ABS(((xB - xA) * (yC - yA)) - ((xC - xA) * (yB - yA))) / 2
PRINT "Aire :"; STR$(z)
PRINT : PRINT "Appuyez sur une touche...": PRINT
x$ = ""
WHILE x$ = ""
x$ = INKEY$
WEND
NEXT q
NEXT p
NEXT o
salut a vous.
merci Yoda
Donc voilà en se basons sur ton aide je suis arrivée au à la fin de se exo .
merci Yoda
Donc voilà en se basons sur ton aide je suis arrivée au à la fin de se exo .
REM triqngle
BEEP
INPUT "n="; n
m = 2
h = 0
s = 0
u = 1
h = 0
k = prob(n)
CLS
IF n < 3 THEN
PRINT
PRINT "Avec le nombre de poit que vous aver donne vous pouvez pas avoire de triangle"
PRINT
ELSE
RANDOMIZE TIMER
DIM a(n, m)
FOR i = 1 TO n
FOR j = 1 TO m
a(i, j) = INT(RND * 50)
'PRINT a(i, j),
NEXT j
'PRINT
NEXT i
'----------------------------------------------------------------
DIM triangle(k, 7)
DIM o AS INTEGER, p AS INTEGER, q AS INTEGER
PRINT
FOR o = 1 TO n - 2
FOR p = o + 1 TO n - 1
FOR q = p + 1 TO n
h = h + 1
triangle(h, 1) = a(o, 1)
triangle(h, 2) = a(o, 2)
triangle(h, 3) = a(p, 1)
triangle(h, 4) = a(p, 2)
triangle(h, 5) = a(q, 1)
triangle(h, 6) = a(q, 2)
xA = triangle(h, 1)
yA = triangle(h, 2)
xB = triangle(h, 3)
yB = triangle(h, 4)
xC = triangle(h, 5)
yC = triangle(h, 6)
s = ABS(((xB - xA) * (yC - yA)) - ((xC - xA) * (yB - yA))) / 2
triangle(h, 7) = s
'PRINT xA; yA; xB; yB; xC; yC, s
NEXT q
NEXT p
NEXT o
PRINT
'----------------------------------------------------------------
max = triangle(1, 7)
s = 0
FOR i = 2 TO k
s = triangle(i, 7)
IF s > max THEN u = i
NEXT i
PRINT "le triangle qui a la plus grande aire a pour coordoner:"
PRINT "A("; triangle(u, 1); ","; triangle(u, 2); ")",
PRINT "B("; triangle(u, 3); ","; triangle(u, 4); ")",
PRINT "C("; triangle(u, 5); ","; triangle(u, 6); ")"
PRINT "et une aire de "; triangle(u, 7)
END IF
FUNCTION prob (n)
F = 1
G = 6
H = 1
l = n - 3
FOR i = 1 TO n
F = F * i
NEXT i
FOR i = 1 TO l
H = H * i
NEXT i
prob = F / (H * G)
END FUNCTION