Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Algorithme sous algobox

Posté par
Cachouille
20-05-16 à 20:42

Bonjour,

Je dois faire un algorithme avec le logiciel Algobox, j'ai essayé quelque-chose mais comme on ne m'a jamais vraiment expliqué, je me suis trompée quelque-part, et je ne sais pas où ...

L'algorithme est :

ENTREE
un entier naturel a non nul
TRAITEMENT
Tant que a>1
  Si a est pair alors
    mettre a/2 dans a
    sinon mettre 3a+1 dans a
  Fin du si
Fin du tant que
SORTIE
Afficher a

J'ai donc rentré :

VARIABLES
- a EST DU TYPE NOMBRE
DÉBUT ALGORITHME
- LIRE a
  TANT QUE (a>1) FAIRE
   - DÉBUT TANT QUE
     SI (a%0) ALORS
      - DÉBUT SI
      - a PREND LA VALEUR a/2
      - FIN SI
        SINON
        - DÉBUT SINON
        - a PREND LA VALEUR 3*a+1
        - FIN SINON
  FIN TANT QUE
- AFFICHER a
FIN ALGORITHME

a%0 correspond au reste de la division euclidienne de a/2, soit si a est pair 0.
Je suis bloquée à la ligne 13 soit "a prend la valeur 3*a+1", ça me dit qu'il y a une erreur, j'ai essayé avec "affecter calcul" plutôt que "affecter valeur à variable" mais ça me donne une suite  infinie de chiffres...

Voilà, si quelqu'un pouvait m'éclairer je lui en serai très reconnaissante

Posté par
mathafou Moderateur
re : Algorithme sous algobox 20-05-16 à 21:01

Bonjour,

Citation :
a%0 correspond au reste de la division euclidienne de a/2

et pourquoi pas au reste de la division par 3 ou 7 ??
non c'est a%2 qui est le reste de la division par 2 (et a%3 de la division par 3et a%7 de la division par 7 etc)

a%0 donnerait le reste de la division de a par 0 !!!
(et donc au mieux une erreur système "division par 0")

donc le test consiste à tester si a%2 est égal à 0 (a pair) ou 1 (a impair)


par ailleurs un algorithme qui est :

tant que a >1
calcul qui pour toute valeur de a entière > 0 donne un a entier > 0
fin tant que
afficher a

affichera toujours 1 (ou ne se terminera jamais)
et ce quel que soit le calcul effectué dans la boucle

cet algorithme est particulièrement sot dès le départ (il ne sert à rien en fait)
mais bon, si c'est donné comme ça dans l'énoncé ...

Posté par
Leile
re : Algorithme sous algobox 20-05-16 à 21:06

bonjour,

que doit faire ton algorithme ?
avec le tant que a>1  , on sortira toujours a=1   à la fin..

remarque : pour savoir si a est pair, ton test a%0  est faux , tu devrais écrire SI (a%2)=0 alors ..

ca donne :
1   VARIABLES
2     a EST_DU_TYPE NOMBRE
3   DEBUT_ALGORITHME
4     LIRE a
5     TANT_QUE (a>1) FAIRE
6       DEBUT_TANT_QUE
7       SI ((a%2)==0) ALORS
8         DEBUT_SI
9         a PREND_LA_VALEUR a/2
10        FIN_SI
11        SINON
12          DEBUT_SINON
13          a PREND_LA_VALEUR (a*3)+1
14          FIN_SINON
15      FIN_TANT_QUE
16    AFFICHER a
17  FIN_ALGORITHME

mais encore une fois, je doute que ta condition Tant que soit juste..

Posté par
LeDino
re : Algorithme sous algobox 20-05-16 à 21:31

Modifier la condition du SI
Placer le AFFICHER dans la boucle...

Syracuse

VARIABLES
    a EST_DU_TYPE NOMBRE 

DEBUT_ALGORITHME
    LIRE a 
    TANT_QUE (a>1) FAIRE 
        DEBUT_TANT_QUE
        SI (a%2==0) ALORS 
            DEBUT_SI
            a PREND_LA_VALEUR a/2 
            FIN_SI 
        SINON 
            DEBUT_SINON
            a PREND_LA_VALEUR 3*a + 1 
            FIN_SINON
        AFFICHER* a
        FIN_TANT_QUE

FIN_ALGORITHME

Posté par
Cachouille
re : Algorithme sous algobox 20-05-16 à 21:37

Merci,

Oui, effectivement cet algorithme n'a pas beaucoup d'intérêt, je l'avais déjà fait à la main.
Je pense que le but était qu'on se rende compte qu'on obtient toujours 1 au final.
Pour a%0, j'avais cru comprendre que c'était ce qu'il fallait faire d'après un message du professeur, je n'étais pas sûre donc j'ai essayé avec a%2 aussi mais malgré cette erreur ce n'est pas ça qui bloquait
L'erreur que cela m'indiquait se trouve à la 13ème ligne, c'est principalement ça que je ne comprends pas, avec ou sans parenthèse, rien ne marche...

Posté par
Cachouille
re : Algorithme sous algobox 20-05-16 à 21:45

Merci LeDino,

Plus d'erreur à la ligne 13 à présent, mais toujours des résultats pas très convaincants, j'obtiens par exemple 21 avec a=4 ou 168421 avec a=5.

Posté par
alb12
re : Algorithme sous algobox 20-05-16 à 21:50

salut,
as-tu compare avec les calculs à la main ?

Posté par
LeDino
re : Algorithme sous algobox 20-05-16 à 21:51

Entrer a : 4
2
1

Entrer a : 7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1

Posté par
LeDino
re : Algorithme sous algobox 20-05-16 à 21:51

... ça marche très bien.

Posté par
mathafou Moderateur
re : Algorithme sous algobox 20-05-16 à 22:02

Cachouille as tu remarqué l'astérisque sur AFFICHER* ??

cela veut dire passer à la ligne
sinon il affiche les résultats successifs par exemple 16, 8, 4, 2, 1, à la queue leu leu sans espaces ni rien = 168421

par ailleurs l'erreur sur le "SI" (le a%0) est la vraie erreur qui fait dire à algobox à tort que l'erreur est ligne 13

en mettant la bonne condition dans le SI sans rien changer d'autre, l'erreur prétendue ligne 13 n'existe plus
elle n'était donc pas ligne 13 cette erreur et c'est algobox qui nous bourre le mou (bug sur les diagnostics dans algobox lui-même).

Posté par
LeDino
re : Algorithme sous algobox 20-05-16 à 22:05

Bien vue l'astérisque ...

Posté par
Cachouille
re : Algorithme sous algobox 20-05-16 à 22:10

Ah oui !

Désolé je n'avais pas pris ça en compte, je l'avais remarquée mais je ne savais pas à quoi cela correspondait, ça marche très bien maintenant !

Merci beaucoup

Posté par
LeDino
re : Algorithme sous algobox 20-05-16 à 22:18

Posté par
Glapion Moderateur
re : Algorithme sous algobox 20-05-16 à 23:26

Si le sujet t'intéresse, ça s'appelle l'algorithme de Syracuse. tu trouveras plein de compléments sur le site (comme Suite de Syracuse ou Dm Suite Vecteur d'un plan ou L'algorithme de Syracuse ou suite de Syracuse) notamment qui trouve les valeurs initiales qui donnent le temps de vol maximum ou encore l'altitude maximum entre 1 et 10000 ou plus).



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