Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Algorithme qui révise les tables de multiplication

Posté par
AsPiraTeuRe
31-03-13 à 22:54

Bonjour, bonsoir

Je dois écrire un programme qui permet de réviser les tables de multiplications.
entrées: les réponses de l'utilisateur à 10 questions posées sous la forme"[?]*[?]="
Sortir: 'faux" ou "exact" selon le cas, puis"Terminé,[?] réponses correctes sur 10".
Traitement: générer deux nombres aléatoires compris entre -10 et 10.
Je travail sur Algobox

Pouvez-vous m'aider si vous plait

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:14

Bonjour,

score = 0
répéter 10 fois :
tirer deux nombres au hasard entre -10 et +10
poser la question
saisir la réponse
si réponse bonne : sortir "exact", score + 1 -> score
sinon : sortir "faux"
afficher "Terminé" et score

traduire sur Algobox : il ne mord pas, essaye.

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:25

Excusez-moi, c'est peut être une question bête, mais comment on fait la boucle pour y répéter 10 fois?

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:30

tu définis une variable que tu appelles comme tu veux, i par exemple
et tu utilises une boucle
POUR i ALLANT_DE 1 A 10

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:39

Merci, et comment on fait pour générer un nombre aléatoire?

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:43

on cherche dans la doc de Algobox (aide en ligne)
Chapitre 3 - opérations avec les nombres, il y a une fonction faite pour.

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 31-03-13 à 23:52

Je fini cela demain, je vais me coucher

début de mon algorithme:

variable:

score, question, nombre1, nombre2

début:

score prend la valeur 0
pour i allant de 1 à 10
nombre1 prend la valeur (chiffre aléatoire entre -10 et 10)
nombre2 "      "  "       "          "         "   "  "  "
si question==nombre1*(nombre2)
score prend la valeur +1
afficher " Exact "
fin si
sinon
afficher "faux"
fin sinon
afficher score

Es-ce un bon début?

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 01-04-13 à 00:05

il y a encore quelques trous.
mais "c'est un bon début"

- aller effectivement regarder l'aide en ligne pour voir la traduction de "chiffre aléatoire" (ne pas confondre chiffre et nombre, tu veux un nombre) et comment faire pour qu'il soit entre -10 et +10

- et "question" vaut combien ?? il ne manquerait pas un "lire" ?
ta variable question n'a jamais pris aucune valeur
la comparer à quoi que ce soit ne veut rien dire (ou plutot donne un résultat totalement imprévisible)

- "score prend la valeur +1" veut dire que tu mets toujours la valeur 1 dans score,
et non pas que tu comptes le nombre de réponses justes,
c'est à dire que tu dois ajouter 1 à score, pas mettre la valeur constante +1 (identique à "1" sans signe), toujours la même, dedans

- il manque textuellement le "fin pour", mais ça Algobox rale en vrai s'il manque
c'est surtout que ici on ne sait pas où tu l'aurais mis ce "fin pour"...

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 01-04-13 à 09:53

Bonjour,

-Pour les nombres aléatoire, on me propose cette article: http://algogame.forums-actifs.net/t12-generer-une-valeur-aleatoire
Mais je ne comprends pas comment on peut générer un nombre entre -10 et 10.


-Pour répondre à "question" vaut combien? Je pense qu'elle vaut le premier nombre aléatoire * le deuxième nombre aléatoire.

- Dans score prend la valeur score + 1.


score prend la valeur 0
pour i allant de 1 à 10
nombre1 prend la valeur (chiffre aléatoire entre -10 et 10)
nombre2 "      "  "       "          "         "   "  "  "
si question==nombre1*(nombre2)
score prend la valeur score +1
afficher " Exact "
fin si
sinon
afficher "faux"
fin sinon
Fin pour
afficher score
fin algorithme

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 01-04-13 à 10:35

Bonjkour,

si tu avais cliqué sur le menu "Aide" en haut de l'écran de Algobox, il n'aurait pas été difficile de voir que la fonction Algobox qui génère un nombre aléatoire est random()

Citation :
Opérations avec les nombres :
En plus des 4 opérations de base (+,-,*,/), les calculs possibles sont (x étant une variable du type NOMBRE) :
...
Obtenir un nombre pseudo-aléatoire compris en 0 et 1 : random()
...
Partie entière d'une variable x : floor(x)


chercher des infos supplémentaires sur Internet, certes, mais c'est dans un deuxième temps, avec l'espoir d'obtenir la solution "toute cuite sans avoir besoin de se creuser la cervelle".
random() donne un nombre entre 0 et 1
si on multiplie par 10 on obtient un nombre entre 0 et 10 !!
et si on veut obtenir un nombre entre -10 et + 10 on multiplie par 20 et on décale en retranchant 10

random()*20 - 10 donne un nombre aléatoire entre -10 et +10 (exclus)
comme on veut des nombres entiers (random donne des nombres "réels")
il faut rajouter une fonction qui "tronque" : la fonction "partie entière" floor()

cela donne floor(random()*20) - 10
floor(random()*20) donne un résulatt entre 0 inclus et 20 exclus
si on veut 20 inclus on lui demande juste entre 0 inclus et 21 exclus !

et au final le tirage d'un nombre aléatoire entier (dans Z) entre -10 et +10 inclus est floor(random()*21) - 10

à adapter si on veut entre -10 et +10 exclus.

"question" vaut combien? Je pense qu'elle vaut le premier nombre aléatoire * le deuxième nombre aléatoire.
non.
question est le contenu de la variable "question" et rien d'autre
tant que tu n'as rien mis explicitement dedans, cette variable ne contient rien
de plus le produit des deux nombres aléatoires, c'est la réponse attendue.
pas la réponse tapée par celui qui utilise le programme !
et tu as la réponse : tu dois ajouter un "LIRE question"
C'est tout.
sans ce "LIRE question" explicite, personne ni surtout Algobox ne va deviner que question devrait être ce que taperait l'utilisateur sans même qu'on lui demande (par l'instruction LIRE)


score prend la valeur score + 1 OK
le fin pour est OK aussi

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 01-04-13 à 10:51

VARIABLES
score EST_DU_TYPE NOMBRE
nombre1 EST_DU_TYPE NOMBRE
nombre2 EST_DU_TYPE NOMBRE
question EST_DU_TYPE NOMBRE
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
score PREND_LA_VALEUR 0
LIRE question
POUR i ALLANT_DE 1 A 10
DEBUT_POUR
nombre1 PREND_LA_VALEUR floor(random()*21) - 10
nombre2 PREND_LA_VALEUR floor(random()*21) - 10
SI (question==nombre1*nombre2) ALORS
DEBUT_SI
score PREND_LA_VALEUR score+1
AFFICHER "Exact"
FIN_SI
SINON
DEBUT_SINON
AFFICHER "Faux"
FIN_SINON
FIN_POUR
AFFICHER score
FIN_ALGORITHME

Mais ça ne marche pas

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 01-04-13 à 11:12

tu ne demande qu'un seul résultat ????
tu dois pour chaque tirage demander la valeur de cette multiplication
pas demander une fois pour toute un résultat et le comparer, cet unique résultat, à 10 multiplications tirées ensuite au hasard !!

Et tout de même, il faut bien que tu affiches quelle multiplication est demandée ! que tu affiche le message

Citation :
10 questions posées sous la forme "[?]*[?]="
tu crois que parce que tu as mis des valeurs dans les variables nombre1 et nompbre2 ça suffit ?
pas du tout. Algobox est bête, il faut lui dire tout ce qu'il doit faire, il ne va prendre aucune initiative.
si tu veux afficher la valeur de nombre1, tu dois lui dire explicitement
AFFICHER nombre1
etc ...

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 01-04-13 à 11:44

Je lui est dit d'afficher nombre1 et nombre2. Mais je n'arrive pas à dire que c'est juste ou faux: cela me met les multiplications à faire et la dernière, cela écrit si elle est juste ou fausse et le nombres de multiplications juste.

score EST_DU_TYPE NOMBRE
  nombre1 EST_DU_TYPE NOMBRE
  nombre2 EST_DU_TYPE NOMBRE
  question EST_DU_TYPE NOMBRE
  i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  score PREND_LA_VALEUR 0
  POUR i ALLANT_DE 1 A 10
    DEBUT_POUR
    nombre1 PREND_LA_VALEUR floor(random()*21) - 10
    nombre2 PREND_LA_VALEUR floor(random()*21) - 10
    AFFICHER "La multiplication est:"
    AFFICHER nombre1
    AFFICHER "*"
    AFFICHER nombre2
    question PREND_LA_VALEUR nombre1*nombre2
    LIRE question
    SI (question==nombre1*nombre2) ALORS
      DEBUT_SI
      score PREND_LA_VALEUR score+1
      AFFICHER "Exact"
      FIN_SI
      SINON
        DEBUT_SINON
        AFFICHER "Faux"
        FIN_SINON
    FIN_POUR
    AFFICHER "Votre score est de "
  AFFICHER score
FIN_ALGORITHME

Posté par
mathafou Moderateur
re : Algorithme qui révise les tables de multiplication 01-04-13 à 12:36

la ligne "question PREND_LA_VALEUR nombre1*nombre2" est inutile puisque la ligne suivante tu remplaces cette valeur par ce que tape l'utilisateur :
"LIRE question"

mais ça ne perturbe pas l'algorithme qui doit fonctionner

en réduisant à 4 le nombre de boucles pour tout avoir sur l'écran :

***Algorithme lancé***
La multiplication est:-7*8
Entrer question : -56
ExactLa multiplication est:6*8
Entrer question : 48
ExactLa multiplication est:-10*-4
Entrer question : 40
ExactLa multiplication est:7*-2
Entrer question : 14
FauxVotre score est de 3
***Algorithme terminé***

donc "ça marche" (j'ai copié collé ton algorithme et j'ai uniquement remplacé "10" par "4" pour que ça ne dure pas trop longtemps)
on peut certes améliorer la présentation en faisant suivre le verdict "exact" ou "faux" d'un retour à la ligne :
AFFICHER* "Exact"
AFFICHER* "Faux"
le "*" derrière "AFFICHER" veut dire "retour à la ligne après l'affichage" sinon il continue tout sur la même, et seuls les "LIRE" provoquent un retour à la ligne

qui donne
***Algorithme lancé***
La multiplication est:8*-6
Entrer question : -48
Exact
La multiplication est:-4*6
Entrer question : 24
Faux
La multiplication est:6*-4
Entrer question : -24
Exact
La multiplication est:-7*-3
Entrer question : 21
Exact
Votre score est de 3
***Algorithme terminé***

Posté par
AsPiraTeuRe
re : Algorithme qui révise les tables de multiplication 01-04-13 à 13:28

Ok merci!



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