Je trouve pas où est ma faute :(
Résolu
laylana
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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?
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?
A voir également:
- Je trouve pas où est ma faute :(
- Pourquoi ma tv ne trouve pas toutes les chaînes - Guide
- Ou se trouve le presse papier - Guide
- Ou trouver adresse mac - Guide
- Ou se trouve la corbeille de whatsapp - Guide
- Où se trouve mon adresse url ? - Guide
1 réponse
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...
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...