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
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
A voir également:
- Est-ce que vous pouvez me corriger
- Comment corriger l'erreur 0x80070643 ? - Guide
- Comment corriger un pdf - Guide
- Corriger transmath 3eme ✓ - Forum Études / Formation High-Tech
- Corriger manuel - Forum Études / Formation High-Tech
- Impossible de corriger les problèmes, des paquets défectueux sont en mode « garder en l'état ». - Forum Linux / Unix
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
11 sept. 2012 à 14:04
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...
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
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
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.
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
Modifié par eriiic le 6/10/2012 à 11:35
Trop tard, elle a eu 0
Je met en résolu
eric
Je met en résolu
eric
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
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.
"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.