Est-ce que vous pouvez me corriger
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 -
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.
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.
A voir également:
- Est-ce que vous pouvez me corriger
- Corriger un message whatsapp - Guide
- Corriger photos gratuit - Guide
- Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ✓ - Forum Ubuntu
- Comment corriger l'erreur 0x80070643 ? - Accueil - Windows
- Corriger un pdf - Guide
4 réponses
Il faut absolument que tu regardes les erreurs indiquées par ton compilateur !!!
Le mien n'a aucune compassion :
Le mien n'a aucune compassion :
UntiL 5:=a+b+c; // Fatal: Syntax error ; expected but UNTIL foundEncore une histoire de point-virgule...
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
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
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.
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.
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.
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.
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.
"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.