Bonjour , voilà j'ai un problème sur cet exercice à réaliser sur Algobox:
On considère l'algorithme suivant :
VARIABLES : A liste de nombres réels a1 , a2, ...
n,q,r entiers naturels
x nombre réel
ENTRÉE : A série statistique ordonnée croissante
Affecter à n la longueur de A
TRAITEMENT : Affecter à q le quotient de la division euclidienne de n par 4 .
Affecter à r le reste de la division euclidienne de n par 4 .
Si r = 0 alors Affecter à x la valeur aq+1
Fin de Si
SORTIE : Afficher x
Questions :
1) Faire fonctionner l'algorithme et compléter le tableau suivant :
/Variable/n/q/r/x/
/Valeur / / / / /
a) En entrant A= (-2,4;0;3,14;5;5,1;7)
b) En entrant A= (6;7,5;8;10;10;13;16;18,5)
2) Quel indicateur statistique l'algorithme affiche-t-il ?
3)On admet que le troisième quartile de la série A est donné par a3q+r .
a)Modifiez l'algorithme pour qu'il affiche le premier et le troisième quartile de la série introduite.
b)Quelles sont les valeurs affichées par l'algorithme pour les deux séries précédentes ?
4)Représenter les quartiles et les médianes des séries ci-dessus à l'aide de diagrammes en boîtes et les utiliser ces diagrammes pour comparer les deux séries .
Question BONUS : Modifier l'algorithme pour qu'il puisse calculer le 1er et le 9e
décile .
Voilà donc j'aimerais que vous m'aidiez car je ne comprend pas comment mettre une série statistique ordonnée croissante sur Algobox . Svp j'ai encore 1 semaine pour le faire je vous remercie d'avance bonne journée .
bonsoir
les différentes variables de la série, triées dans l'ordre croissant,
sont enregistrées dans une variable "liste" appelée A
et dont chaque élément est indicé, et c'est la machine qui va gérer les indices.
par exemple pour A= (-5;2;11)
a1 = -5 ---- lire "a indice 1"
a2 = 2
a3 = 11
note 1 : pour faire cet exercice, il est nécessaire que tu saches bien ton cours sur comment calculer les quartiles d'une série statistique.
note 2 : Si r = 0 alors Affecter à x la valeur aq+1
il s'agit bien sûr de "a indice q", et non pas de "a fois q"
Merci de votre réponse je regarderai tout ça demain sur algobox je vous souhaite une très bonne soirée
Voici mon algorithme , quand je le lance , j'ai une erreur de calcul soit à l'instruction après le SI ou soit à l'instruction après le SINON selon si mes valeurs sont positives ou négatives. Bonne journée
Voici mon algorithme , quand je le lance , j'ai une erreur de calcul soit à l'instruction après le SI ou soit à l'instruction après le SINON selon si mes valeurs sont positives ou négatives. Bonne journée
Quand on passe sur l'instruction x PREND_LA_VALEUR A[q+1],
A[q+1] n'a pas encore été défini.
mais de toute façon, ton algorithme ne fait pas ce que dit l'énoncé
n est la longueur de A or pour toi n prend la valeur des termes de la suite
et puis dans l'énoncé, on a jamais besoin de manipuler les termes de la suite d'après ce que je lis.
(sinon pour info : Il est possible d'entrer directement les termes d'une liste. Pour cela, il suffit d'utiliser l'instruction LIRE maliste[1]
(1 représentant le premier rang des termes de la liste que l'on veut entrer). Lors de l'exécution de l'algorithme, il suffira alors d'entrer toutes les valeurs souhaitées (dans l'ordre) en les séparant par : )
Autre façon de faire, mettre une instruction
A[1] PREND_LA_VALEUR -2:4:0:3:14:5:5:1:7
, tous les termes de la suite sont alors rentrés d'un seul coup
Bonjour , je suis désolé je ne comprends toujours pas comment faire fonctionner l'agorithme j'ai beau chercher et même avec ce que vous m'avez dit je n'y arrive pas 😫😥
n représente le nombre de variables (=d'éléments de la liste A)
en fait, ici, n , c'est aussi l'effectif total.
par ex pour 1a) En entrant A= (-2,4;0;3,14;5;5,1;7)
n = 9
==> tu dois demander la saisie de n
question : à ton avis, à quoi sert cet algo ?
ben là, normal que ça ne marche pas !
à quel moment tu indiques à la machine les éléments de A?
comme t'a précisé Glapion, tu peux le faire :
- soit en demandant la saisie de A, élément par élément
- soit en demandant la saisie de A, et en tapant la liste complète d'un seul coup
- soit sans demander la saisie : AFFECTER valeur à variable
mais cette dernière façon n'est pas recommandée, car elle fige ton algo sur une liste A en particulier.
et puis à aucun moment dans ces instructions on a besoin des valeurs de la liste donc tu n'as même pas besoin de déclarer A, il suffit que tu demandes la longueur n et que tu fasses les calculs demandés :
Affecter à q le quotient de la division euclidienne de n par 4 .
Affecter à r le reste de la division euclidienne de n par 4 .
Si r = 0 alors Affecter à x la valeur aq+1
Merci mais là comme je n'ai pas besoin de déclarer A , la ligne A[q] et A[q+1] ne fonctionnent pas , comment je peux y remplacer ?
On t'a déjà dit que n c'est la longueur de la liste et pas la liste.
quand on te demande n tu dois juste répondre 9
la première série que l'on te donne A= (-2,4;0;3,14;5;5,1;7) il y a 9 termes, non ?
Nan il y a bien 6 termes pour A et j'ai bien recopié l'énoncé à l'identique . Je suis désolé mais à la ligne a*q+1 ça ne marche toujours pas alors que j'ai bien suivi vos consignes ....
ha oui OK je n'avais pas vu la nuance entre les , et les ; donc OK, 6 termes alors.
je ne peux pas te dire ce qui ne va pas dans ton algorithme si je ne le vois pas.
(et essaye de le mettre en mode texte et pas en capture d'écran)
jusque ici aucun de ceux que tu as mis ne représente les instructions de ton énoncé.
Voilà mon algo :
VARIABLES
n EST_DU_TYPE NOMBRE
q EST_DU_TYPE NOMBRE
r EST_DU_TYPE NOMBRE
x EST_DU_TYPE NOMBRE
DEBUT ALGORITHME
Lire n
q PREND_LA_VALEUR n/4
r PREND_LA_VALEUR n%4
SI (r==0) ALORS
DEBUT_SI
x PREND_LA_VALEUR a*q
FIN_SI
SINON
DEBUT_SINON
x PREND_LA_VALEUR a*q+1
FIN_SINON
Afficher x
FIN_ALGORITHME
Voilà et quand je tape n=6 ça fonctionne jusqu'à la ligne "x PREND_LA_VALEUR a*q+1"
a n'a jamais été déclaré ni défini.
que veut dire le a de a*q+1 dans ton énoncé ?
et puis aussi ton instruction "x PREND_LA_VALEUR a*q " elle figure nul part dans ton énoncé ?
Voici le vrai énoncé j'ai zappé une partie désolé
VARIABLES : A liste de nombres réels a1 , a2, ...
n,q,r entiers naturels
x nombre réel
ENTRÉE : A série statistique ordonnée croissante
Affecter à n la longueur de A
TRAITEMENT : Affecter à q le quotient de la division euclidienne de n par 4 .
Affecter à r le reste de la division euclidienne de n par 4 .
Si r = 0 alors Affecter à x la valeur aq
Sinon affecter à x la valeur aq+1
Fin de Si
SORTIE : Afficher x
Par contre vous me dites que A n'as pas encore été défini mais dans un message plus haut vous me dites que nous n'avons pas besoin de déclarer A ...
d'après ce que je comprends de l'énonce de départ :
VARIABLES : A liste de nombres réels a1 , a2, ...
il s'ensuit que l'on doit saisir la liste A, composée de a1, a2, etc
et qu'ainsi chaque élément est identifié et accessible.
une fois que l'on a calculé le rang q ou q+1 qui correspond à Q1
il suffit d'aller afficher l'élément de A qui contient le quartile.
donc
x PREND_LA_VALEUR A[q]
ou, selon
x PREND_LA_VALEUR A[q+1]
qu'en pensez-vous?
n'abandonne pas, tu y es presque !
il te suffit d'ajouter l'instruction LIRE A[1]
avant ou après LIRE n
et lorsque l'algo va tourner, tu saisiras la liste sous cette forme :
-2,4 : 0 : 3,14 : 5 : 5,1 : 7
(les variables sont séparées par des : , c'est la syntaxe qui le demande)
ps : en effet n=6 et non pas 9
autre façon de faire, peut-être plus intuitive
(j'utilise la variable compteur que tu as créée)
LIRE n
POUR compteur ALLANT DE 1 à n
LIRE A[compteur]
FIN POUR
de cette façon-là,
la machine te demandera de saisir l'un après l'autre les éléments a1, puis a2, etc jusqu'à an
as-tu compris ?
Affecter à x la valeur aq donc il faut comprendre aq le q ième treme de la suite
et aq+1 après
donc A[q] et A[q+1] dans ton algorithme.
OK donc là il faut effectivement déclarer la variable A de type Liste et affecter le valeurs
(utilise A[1] PREND_LA_VALEUR -2.4:0:3.14:5:5.1:7 )
attention à mettre des . à la place des virgules et des : à la place des ;
le problème dans ton énoncé maintenant c'est le
affecter à x la valeur aq+1 que je traduis par A[q+1]
cette instruction ne peut pas fonctionner car on est dans un cas ou r est différent de 0 et donc q ou q+1 ne sont pas entier et algobox ne peut pas comprendre A[q]
il faut comprendre que cet algorithme cherche à nous faire trouver la valeur du terme terminant le premier quartile, si n est divisible par 4 ça va mais si n = 6 et que q = alors 3/2, que veut-il qu'on affiche ?
carita peut-être as-tu mieux compris que moi ce que doit faire cet algorithme ?
Merci beaucoup mais là c'est fait exprès ça ne marche toujours pas ça ne veut même pas lire A je perds espoir
évidemment tu as déclaré a et pas A
et de type nombre au lieu de type LISTE
donc c'est sûr que ça ne peut pas marcher
et puis c'est plus a*q maintenant. Lis les posts !
n = 4 * q + r
q doit en effet être entier, donc q= floor(n/4) --- floor = partie entière
ex
A= (-2,4 ; 0 ; 3,14 ; 5 ; 5,1 ; 7)
n = 6,
n = 1*4 + 2 ==> q=1 et r=2
r0 , donc le 1er quartile correspond à la (q+1)ième valeur, soit la 2ème de la variable
donc Q1 = 0
[A1] prend la valeur... oui, tu peux faire ça, mais bon , relis 12h26
en tout cas, c'est pas faux
q PREND LA VALEUR floor(n/4)
x prend la valeur A[q] et non pas A*q
A tout seul, la machine ne connait pas : elle connait et sait identifier chaque élément de A par son indice
ok, il est juste, et il t'affiche le 1er quartile de cette série : 0
mais tu constates que si tu veux chercher le Q1 d'une autre série,
ben il te faut modifier ton algo !
d'où mon conseil de demander la saisie de la liste A,
et non pas d'initialiser la liste dans l'algo.
cf 13h58 et 14h02
J'ai suivi vos messages et j'ai essayé ce que vous aviez écrit @carita mais ça ne fonctionne pas donc je préfère changer directement dans l'algo et non depuis la console même si c'est plus long
si ça marche !
l'instruction LIRE A[1], toute seule, va permettre de lire TOUS les éléments que tu saisiras, s'il sont séparés par des ":"
dans l'exemple ci-dessus, elle mettra
3 dans A[1]
5 dans A[2]
7 dans A[3]
as-tu compris ?
autre façon de faire : en utilisant un compteur.
on saisit les valeurs de la variable l'une après l'autre
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :