Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithme

Posté par
sisi40
22-12-15 à 10:57

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.

Posté par
mathafou Moderateur
re : algorithme 22-12-15 à 11:30

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

Posté par
mathafou Moderateur
re : algorithme 22-12-15 à 11:32

*
Afficher "coordonnées de B :"
LIRE XB
...

bien sûr (copier-coller malheureux)

Posté par
sisi40
re : algorithme 22-12-15 à 12:08

Ah d'accord merci beaucoup je t'entais de le faire avec toutes vos explications !!!

Posté par
sisi40
re : algorithme 22-12-15 à 14:22

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 ?

Posté par
mathafou Moderateur
re : algorithme 22-12-15 à 15:01

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

Posté par
sisi40
re : algorithme 22-12-15 à 20:42

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

Posté par
mathafou Moderateur
re : algorithme 22-12-15 à 20:49

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)

Posté par
sisi40
re : algorithme 23-12-15 à 11:17

comment fait on pour copier coller avec algobox je ne trouve pas le mode éditeur

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 12:15

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.

Posté par
sisi40
re : algorithme 23-12-15 à 12:55

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é***

Posté par
Glapion Moderateur
re : algorithme 23-12-15 à 13:13

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.

Posté par
sisi40
re : algorithme 23-12-15 à 13:37

Mercier beaucoup Glapion avec votre explication j'ai modifié mes petites erreurs et tout à fonctionner !!!!!!!!

Posté par
sisi40
re : algorithme 23-12-15 à 13:38

merci aussi à mathafou pour votre patience et votre aide !

Posté par
Glapion Moderateur
re : algorithme 23-12-15 à 14:04

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.

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 14:25


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 !!

Posté par
Glapion Moderateur
re : algorithme 23-12-15 à 14:32

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.

Posté par
sisi40
re : algorithme 23-12-15 à 14:45

merci mathafou pour votre exemple mais je ne comprends pas d'où sorte les valeurs de xA, yA.....

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 14:46

ç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

Posté par
sisi40
re : algorithme 23-12-15 à 14:53

ok  cela me semble un peu compliqué à mon niveau mais merci quand meme !!

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 14:56

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 !

Posté par
Glapion Moderateur
re : algorithme 23-12-15 à 15:03

Citation :
on ne peut lui fournir en entrée qu'une valeur approchée décimale de 3


tu peux aussi rentrer sqrt(3).

Posté par
sisi40
re : algorithme 23-12-15 à 15:13

ah oui je comprends mieux mais par contre sur algobox moi sa m'affiche qu'il est equilateral et isocele ....

Posté par
sisi40
re : algorithme 23-12-15 à 15:14

oui glapion j'y avait penser aussi !!

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 15:18

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.

Posté par
mathafou Moderateur
re : algorithme 23-12-15 à 15:21

Citation :
sa m'affiche qu'il est equilateral et isocele ....


ça c'est jouer sur les "SINON" qu'il faut faire :

tester s'il est équilatéral
et SINON
tester s'il est isocèle en A, en B ou en C
etc

les sinon se génèrent si on coche la case "SINON" de la boite de dialogue quand on crée (ou modifie) le SI en mode normal
(un peu galère en mode éditeur)

Posté par
sisi40
re : algorithme 23-12-15 à 15:23

Ah d'accord je suis rassurée je pensais que j'avais fais une erreur !!

Posté par
sisi40
re : algorithme 23-12-15 à 15:25

A ok je ne savais pas qu'il fallait jouer sur les SINON mercis encore pour vos explications !!!!



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1677 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !