Est-ce que vous pouvez me corriger

Résolu
laylana -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
mouhebkh
 
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
A.Nonymous
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Trop tard, elle a eu 0
Je met en résolu
eric
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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