Bonjour, j'ai un devoir maison à faire sur Algobox. Malheureusement, celui-ci me dit que j'ai une erreur, mais je ne l'a trouve pas. le sujet consiste à trouver les coordonnées entières d'une courbe qui a pour fonction f(x)= (x+2016)/(2x-4).
On remplacera x par i et on sait que les abscisses doivent être comprises entre 3 et 3000.
Voila l'algorithme:
Variables : i est un nombre entier
A est un nombre réel
Pour i allant de 3 à 3000
A prend la valeur (i+2016)/(2*i-4)
Si A est un nombre entier
Alors afficher "("
afficher "i"
afficher ";"
afficher "A"
afficher ")"
Fin si
Fin pour
Fin
J'aimerais donc votre aide pour savoir où est le problème de syntaxe dans cet algorithme.
Merci de votre aide
???
Ce que tu proposes n'est pas du langage Algobox.
Dans ces conditions, difficile de savoir où se trouve ton erreur de syntaxe.
Pour autant :
afficher "i"
afficher "A"
ne sont pas corrects, car il s'agit d'afficher
la valeur des variables i et A
et non les caractères "i" et "A"
Sur Algobox, j'ai mis Afficher variable i puis Afficher variable A. mais mon problème ne viendrait il pas de Si A est un nombre entier ?
Merci
bonjour,
ton algo est donné en langage naturel, pas en Algobox.
tes variables devraient etre toutes les deux du type nombre ; pas type "entier" :
la boucle POUR :
POUR i ALLANT_DE 3 A 3000
DEBUT_POUR
A PREND_LA_VALEUR (i+2016)/(2*i-4) ==> OK
en Algobox, pour tester si A est entier, tu peux comparer A à sa partie entière (avec la commande floor(A) qui te renvoie la partie entière de A)
SI (A==(floor(A))) ALORS
DEBUT_SI
AFFICHER i ==> si tu écris afficher "i", tu n'affiches pas la valeur de i
etc...
OK ?
tu reprends ?
D'accord donc si j'ai bien compris, l'algorithme est :
Variables :
i est du type nombre
A est du type nombre
Pour i allant de 3 à 3000
A prend la valeur (i+2016)/(2*i-4)
Si A==flor(A) alors
Afficher (message) "("
Afficher (variable)"i"
Afficher (message) " ; "
Afficher (variable) "A"
Afficher (message) ")"
Fin si
Fin pour
Fin
Mon algorithme est il correct?
Merci
Bonjour,
Alessia86 : tu n'as pas vraiment saisi la différence entre les mots algorithme et programme
il est vrai que l'introduction de cette horreur qu'est Algobox dans l'enseignement entretient largement cette confusion.
algorithme : description formelle d'une méthode, de l'enchainement d'opérations mathématiques et logiques etc à effectuer
généralement "en langage naturel" (= avec des phrases en français)
la syntaxe est donc assez "laxiste"
programme : traduction d'un algorithme dans un langage donné, sur une machine donnée
comme c'est destiné à être lu par une machine la syntaxe est imposée exactement, à la virgule près et à la casse (majuscule/minuscule) exacte
"un algorithme en Algobox" ça n'existe pas
c'est un raccourci de langage pour dire "le programme qui est la traduction en langage Algobox d'un algorithme"
ce que tu as écrit est un algorithme (mal écrit) et n'a donc rien à voir avec Algobox
la syntaxe Algobox est très précise et doit être respectée au caractère exact
Pour i allant de 3 à 3000 faux
POUR i ALLANT_DE 3 A 3000 correct
DEBUT_POUR
...
FIN_POUR
Si A==flor(A) alors faux
SI (A==floor(A)) ALORS correct
DEBUT_SI
...
FIN_SI
Afficher (message) "(" faux
Afficher (variable)"i"
AFFICHER "(" correct c'est les guillemets qui disent que c'est un message
AFFICHER i correct c'est l'absence de guillemets qui dit que c'est une variable
moralité :
Algobox fournit une interface à cliquer et des boites de dialogue pour générer les mots clés corrects
ne jamais "taper" des commandes Algobox directement avant de connaitre très bien le langage.
c'est d'ailleurs dit dans l'aide en ligne :
Via l'option "Mode Edition" du menu "Edition", il est possible de passer du mode d'édition du code par défaut (avec boîtes de dialogue) à un mode d'édition du code comme sur un éditeur de texte classique. Ce mode d'édition, à réserver aux utilisateurs expérimentés, ...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :