Je trouve pas où est ma faute :(

Résolu
laylana -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
J'ai un devoir à faire, j'ai essayé mais ça marche pas et je trouve pas où est l'erreur :(
Voilà l'énoncé et ce que j'ai essayé de faire :
L'exercice:
On se propose de répéter le traitement ci-dessous pour un entier positif et non nul X.
1- Si le nombre est impair alors on le multiplie par 3 et on lui ajoute 1
2- Si le nombre est pair alors on le divise par 2.
Il est éventuel que le nombre 1 apparaisse lors des n premières répétitions.
Ecrire un programme Pascal qui permet d'appliquer ce traitement sur un entier X >0 et d'afficher tous les résultats de calculs obtenus avant l'aboutissement au chiffre 1.
Exemples :
x= 22 donc l'ordinateur affiche 11 - 34 -17 - 52 - 26 - 13 -40 - 20 - 10 - 5 - 16 -8- 4 -2-1
x = 7 donc l'ordinateur affiche 22 - 11 - 34 -17 - 52 - 26 - 13 -40 - 20 - 10 - 5 - 16 -8- 4 -2-1

Voilà ce que j'ai fais:
PROGRAM nb_p_imp;
Uses Wincrt;
Var n:integer;

BEGIN
Repeat
Write ('Tapez un nombre>0');
Readln (n)
Until (n>0);

Repeat
If n mod 2=0 Then n:=n/2 Else
n:=n*3+1
Write (n,'-')
Until n=1


End.
Quelqu'un peut m'aider svp?

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Pour trouver les erreurs, il faut te fier au compilateur et aux messages qu'il t'affiche...

Premier truc qui saute aux yeux, il te manque des point-virgules un peu partout !

Ensuite, mais c'est un peu moins naturel, les divisions d'entiers ne doivent pas se faire avec le signe / car ça renvoie un réel et non un entier. Pour les divisions il faut utiliser "div"

Enfin, je te conseille de rajouter un readln; avant le End. pour ne pas que la fenêtre se referme toute seule...
0