Bonjour j'ai un exercice sur algobox a faire, j'ai commencé mais je ne sais c pas si c juste, pourriez vous m'aidez ?...
Voici l'énoncé :
Ecrire un algorithme qui demande de saisir les coordonnés de trois points donnés non alignés, et qui affiche la nature du triangle généré par ces trois points.
Voici ce que moi j'ai commencée à faire (sur algobox) :
VARIABLES
A EST DU TYPE NOMBRE
B EST DU TYPE NOMBRE
C EST DU TYPE NOMBRE
DEBUT ALGORITHME
AFFICHER "A(-3;1)"
AFFICHER"B(12;4)"
AFFICHER"C(-6;-2)"
AFFICHERCALCUL (1-4)/(-3-3)
AFFICHERCALCUL (4+2)/(3+6)
AFFICHERCALCUL(1+2)/(-3+6)
AFFICHER "Le triangle ABC est donc un triangle quelconque"
FIN ALGORITHME
Je ne sais pas du tout si c comme sa qu'il faut faire... Pourriez vous au mois me guidé ?...
Merci d'avance.
Bonjour,
aucun rapport avec ce qui est demandé
l'intérêt d'un algorithme est de travailler avec des données dont on ne connait pas à l'avance les valeurs
les valeurs seront définies au moment de l'éxécution de l'algorithme
par des instructions (en Algobox) LIRE A etc
et bien entendu les calculs se feront ensuite à partir des variables A etc et pas à partir de quelque valeur numérique arbitraire que ce soit.
par ailleurs
A est de type nombre
tu penses qu'un point c'est un nombre ???
il faut entrer les coordonnées de A etc
qui se manifesterons par des nombres XA et YA etc
donc au départ 6 variables.
toutes les 6 à "LIRE" au début de l'algorithme.
ensuite il ne s'agit pas de faire un calcul à la main sur un coin de table avec des valeurs numériques que tu as choisies et d'en déduire que le triangle est toujours "quelconque" pour afficher quoi qu'il arrive ce message absurde "le triangle est quelconque"
(absurde parce qu'avec mes données à moi il est rectangle, les tiennes on s'en fiche, et que un autre jour je lui fournirais au même algorithme un triangle isocèle et il devra me dire "il est isocèle")
c'est le résultat du calcul effectué par l'algorithme qui doit permettre à l'algorithme de savoir si
le triangle est rectangle
ou s'il est isocèle
ou équilatéral
ou quelconque
et donc il y a aura ces 4 messages là dedans !
et le choix du message qui sera réellement affiché se fera par des "SI ... SINON" sur les résultats des calculs faits par l'algorithme sur les valeurs actuelles de ses variables
les valeurs qui ont été saisies à l'exécution en réponse aux instructions LIRE
donc ton algorithme sera de la forme
Variables
XA, YA, XB ... de type nombre
début de l'algorithme
Afficher "coordonnées de A : "
LIRE XA
LIRE YA
Afficher "coordonnées de B"
LIRE XA
... etc
SI (un certain calcul avec XA,YA ...) ALORS
Afficher "le triangle est rectangle"
SI (un autre calcul avec XA,YA ...) ALORS
Afficher "le triangle est isocèle"
etc ...
fin algorithme
à compléter et à rédiger avec la syntaxe exacte de Algobox
d'autre part agencer les SI et SINON correctement pour tenir compte qu'un triangle peut parfaitement être à la fois rectangle et isocèle, un triangle rectangle ne peut pas être équilatéral et vice versa, un triangle équilatéral est forcément isocèle et donc inutile de dire qu'il est isocèle et équilatéral etc
rebonjour j'ai fais comme vous m'avez dit mais je bloque à SI..... Alors : je ne sais quel calcul faire avec xA, yA.... pourriez vous m'éclairez ?
le problème n'est pas du tout un problème d'algorithme mais de pure mathématique :
comment fais tu pour savoir le type de triangle à la main ?
ton calcul que tu exhibais dans ton premier message ne rime d'ailleurs à rien du tout
ce n'est pas en calculant des quotients de (Yc-Ya)/(Xc-Xa) ou du même genre que tu peux savoir la nature d'un triangle !!!
la seule chose qu'un tel calcul te donne est le coefficient directeur de la droite (AB) !! la belle affaire
la nature d'un triangle va se déterminer en calculant les longueurs de ses côtés
(formule de cours à connaitre sur la distance de deux points)
si deux de ces longueurs sont égales le triangle est isocèle
si les trois sont égales, il est équilatéral
si elles satisfont à l'égalité de Pythagore, il est rectangle.
comme ces longueurs vont intervenir dans plusieurs tests, plus ou moins compliqués, on peut avoir très fortement intérêt à les calculer "une fois pour toutes" avant de commencer les "SI",
dans trois variables que l'on peut appeler AB, AC et BC par exemple
nota : on peut mettre avantageusement dans ces variables non pas les mesures des côtés, calculées par l'algorithme bien sûr, mais le carré de ces mesures
vu qu'on en a besoin pour Pythagore et que de re-élever au carré après avoir extrait la racine carrée serait un peu sot
et que AB = AC est équivalent à AB² = AC²
l'algorithme ressemble donc à
LIRE XA etc
AB prend la valeur ... (avec la formule de cours)
AC prend la valeur ...
BC prend la valeur ...
et maintenant les
SI (AB==AC) alors "le triangle est isocèle en A"
etc
Cela ne fonctionne pas l'algorithme m'affiche bêtement que le triangle est isocele en A alors qu'il n'y a aucune des longueurs égales......:-x
comme le problème est dans les détails d'écriture de ton algorithme et que tu ne le donnes pas, je ne vois pas ce que je pourrais en dire !!!
on peut copier-coller un algorithme depuis Algobox ici soit à partir de la fenêtre en mode éditeur
soit en exportant d'abord en fichier texte.
(mettre une copie d'écran en image est très mauvais : on ne peut pas le recopier autrement qu'en retapant tout, ni en citer des morceaux)
le mode éditeur est dans le menu "Edition", "Mode Edition"
passer du mode "normal" au mode "éditeur" ou le contraire fait perdre l'algorithme en cours, il le dit.
il faut le sauvegarder (Fichier - sauver sous ou icone) puis le recharger (Fichier - ouvrir ou icone) après avoir changé de mode
pour copier-coller c'est comme d'hab : sélection à la souris ou CTRL-A pour "sélectionner tout" et CTRL-C CTRL-V (ou pomme, ou clic droit ou menu ...)
ce genre d'opération c'est comme avec n'importe quel logiciel, du classique d'utilisation des menus et raccourcis clavier "standard", copie d'éléments depuis un logiciel vers un autre (ici depuis Algobox vers le navigateur sur le site) etc.
de "l'utilisation courante" du PC.
Pour que vous puissiez m'aidez voici mon algorithme : (merci d'avance)
VARIABLES
xA EST_DU_TYPE NOMBRE
yA EST_DU_TYPE NOMBRE
xB EST_DU_TYPE NOMBRE
xB EST_DU_TYPE NOMBRE
xC EST_DU_TYPE NOMBRE
yC EST_DU_TYPE NOMBRE
AB EST_DU_TYPE NOMBRE
AC EST_DU_TYPE NOMBRE
CB EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
AFFICHER"coordonnées de A"
LIRE xA
LIRE yA
AFFICHER"coordonnées de B"
LIRE xB
LRE yB
AFFICHER"coordonnées de C"
LIRE xC
LIRE yC
AFFICHERCALCUL AB = sqrt((xB-xA)*(xB-xA)+(yB-xA)*(yB-yA))
AFFICHERCALCUL AC = sqrt((xC-xA)*(xC-xA)+(yC-yA)*(yC-yA))
AFFICHERCALCUL CB = sqrt((xB-xC)*(xB-xC)+(yB-yC)*(yB-yC))
SI("AB=AC=CB") ALORS
DEBUT SI
FIN SI
AFFICHER "le triangle est équilatérale"
FIN ALGORITHME
***Algorithme lancé***
coordonnées de A
Entrer xA : 1
Entrer yA : 9
coordonnées de B
Entrer xB : 4
Entrer yB : 8
coordonnées de C
Entrer xC : 9
Entrer yC : 1
1.4142136
11.313708
8.6023253
le triangle est équilatérale
***Algorithme terminé***
non AFFICHERCALCUL AB = sqrt((xB-xA)*(xB-xA)+(yB-xA)*(yB-yA)) ça va pas
plutôt :
AB PREND_LA_VALEUR sqrt((xB-xA)*(xB-xA)+(yB-xA)*(yB-yA))
SI("AB=AC=CB") ALORS c'est absurde, "AB=AC=CB" est une chaîne caractère.
si tu veux faire vraiment un test entre AB et AC et BC, il faut écrire des choses genre :
SI (AB == AC && AC == BC) ALORS
AFFICHER "le triangle est équilatéral" si tu ne le mets pas entre DEBUT SI et FIN SI c'est comme si tu ne testais rien.
Mercier beaucoup Glapion avec votre explication j'ai modifié mes petites erreurs et tout à fonctionner !!!!!!!!
Mouais, n'oublie pas que l'on te demande "la nature du triangle" donc également s'il est isocèle, rectangle, quelconque ou même un mixte de tout ça.
Donc je crains que ton programme doive être plus compliqué que ce que tu as déjà fait.
il faut vraiment le vouloir pour obtenir le cas "équilatéral"
***Algorithme lancé***
coordonnées de A
Entrer Xa : 0
Entrer Ya : 0
coordonnées de B
Entrer Xb : 2
Entrer Yb : 0
coordonnées de C
Entrer Xc : 1
Entrer Yc : 1.7320508
ABC isocèle en C
***Algorithme terminé***
la précision sur les coordonnées de C est encore insuffisante
(3 1.7320508075688772935274463415059...)
***Algorithme lancé***
coordonnées de A
Entrer Xa : 0
Entrer Ya : 0
coordonnées de B
Entrer Xb : 2
Entrer Yb : 0
coordonnées de C
Entrer Xc : 1
Entrer Yc : 1.73205080757
ABC est équilatéral
***Algorithme terminé***
yesss !!
oui, il vaudrait mieux comparer les carrés des cotés, ça éviterait les imprécisions générées par les racines carrées.
ça n'empêchera pas que par principe on ne peut fournir en entrée que des nombres décimaux et qu'il n'existe aucun triangle équilatéral dont les sommets ont des coordonnées décimales
donc de toute façon on va jouer sur les imprécisions de calcul pour affirmer/tester des égalités.
bon d'accord et déja dit, élever au carré (dans le test sur Pythagore) des racines carrées, bof pour la précision ...
et comme comparer AB et AC c'est pareil que comparer AB² et BC² on peut parfaitement tout calculer que avec les carrés des côtés sans extraire jamais quelque racine carrée que ce soit.
(la variable "AB" contiendra le carré de la mesure du coté AB etc)
les cas de dégénérescence d'un triangle aplati (bein oui, si on veut être exhaustif, faut tester ça aussi) se testeront par la condition de colinéarité (xy' - x'y = 0) et pas par somme de deux cotés = le troisième
mes valeurs sont des exemples de ce que je peux taper quand l'algorithme me le demande pour tester mon algorithme et vérifier que c'est bon, qu'il me donne bien le bon type de triangle
il va de toute façon te falloir faire ce genre de test : entrer des coordonnées d'un triangle dont tu connais le type à l'avance et vérifier qu'il te dit bien la vérité
ici le triangle (0; 0) (2; 0) (1; 3) est équilatéral
rigoureusement et mathématiquement équilatéral (le démontrer)
bien entendu on ne peut lui fournir en entrée qu'une valeur approchée décimale de 3
d'où mes valeurs pour tester que mon algorithme est bien capable de me cracher "ce triangle est équilatéral"
et qu'il ne me dit pas "aussi" que en plus il est isocèle !
ah oui je comprends mieux mais par contre sur algobox moi sa m'affiche qu'il est equilateral et isocele ....
ah oui, tiens, le décodeur d'Algobox fait un "exec" sur la valeur entrée sur un LIRE de sorte qu'on peut lui rentrer toute une expression algébrique : (ce qui est une faille de sécurité, mais bon ...)
***Algorithme lancé***
coordonnées de A
Entrer Xa : sqrt(3)
Entrer Ya : 2*Xa + 1
A = (1.73205080757; 4.46410161514)
...
bien vu.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :