Est-ce que vous pouvez me corriger

Résolu/Fermé
laylana - 11 sept. 2012 à 13:41
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 6 oct. 2012 à 13:43
Je suis débutante et j'aimerai bien que quelqu'un me corrige cette exercice

Bonjour,


J'ai fait un programme en Pascal permettant d'afficher tous les entiers de trois chiffres dont la sommes de ces derniers = 5.
Exemple : 104 - 113 - 122 - 131 ............ 500
Voilà mon travail :

Program Entier_3_Chiffres;
Uses Wincrt;
Var a,b,c,n,s:integer;

Begin

for n:=100 to 999 do
Repeat
begin
a:= n div 100 ;
b:= (n mod 100) div 10 ;
c:=n mod 10 div 1 ;

s:= a + b + c ;
Write (s);
UntiL 5:=a+b+c;

if (s div 10 = 0 ) then
writeln(n) ;


End;

End.

4 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
11 sept. 2012 à 14:04
Il faut absolument que tu regardes les erreurs indiquées par ton compilateur !!!

Le mien n'a aucune compassion :
UntiL 5:=a+b+c; // Fatal: Syntax error ; expected but UNTIL found
Encore une histoire de point-virgule...
1
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 11/09/2012 à 14:56
bonjour à tous

1. UntiL 5:=a+b+c;
ce serait plutôt une confusion entre un test "=" et une affectation ":="
2. La boucle repeat ... until est inutile.
Il suffit de tester s pour chaque valeur de n et d'afficher n lorsque s=5

bonne suite
0
Program Entier_3_Chiffres;
Uses Wincrt;
Var a,b,c,n,s:integer;
Begin
for n:=100 to 999 do

begin

a:= n div 100 ;
b:= (n mod 100) div 10 ;
c:=n mod 10 ;
s:= a + b + c ;
if (s=5 ) then
writeln(n) ;
End;
End.
0
Je ne connais pas le Pascal, d'où cette question: que vaut "a" dans "a:= n div 100 ;" ?
Est-ce que Pascal ne sait traiter que les nombres entiers ? :/

Proposition:
c:= n mod 10 ;
b:= ((n-c) / 10 ) mod 10;
a:= ((n-b-c) / 100 ) mod 10;
ou même
a:= ((n-b-c) / 100 );

Au passage, inutile d'aller jusqu'à 999: 500 est la dernière valeur possible.
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
Modifié par eriiic le 6/10/2012 à 11:35
Trop tard, elle a eu 0
Je met en résolu
eric
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 oct. 2012 à 13:43
Pour info :

"Est-ce que Pascal ne sait traiter que les nombres entiers ?"
Bien sûr que non, mais on distingue les divisions avec "div" qui prend deux entiers en entrée et renvoie un entier, et les divisions avec "/" qui prends deux réels en entrée et renvoie un réel.

Exemple : "5 div 2" donne 2, et "5 / 2" (qui est implicitement converti en "5.0 / 2.0") donne 2.5

Partant de ce principe, "que vaut 'a' dans 'a:= n div 100 ;' ?", c'est le chiffre des centaines de n.

Et ta proposition est évidemment fausse, car (n-c)/10, et (n-b-c)/100 vont renvoyer un réel, ce qui est incompatible avec l'utilisation de "mod" qui attend un entier. La compilation va échouer.
0