Ecrire un programme qui permet de calculer le somme des chiffres paires et impaires d'un nombre de 4 chiffres sans utiliser boucle "Pour" et "Si"
J'ai trouvé Aucune solu
Ecrire un programme qui permet de calculer le somme des chiffres paires et impaires d'un nombre de 4 chiffres sans utiliser boucle "Pour" et "Si"
J'ai trouvé Aucune solu
D'abord on ne fait pas les devoirs ensuite ce que tu dis est incompréhensible, tu as comme exercice de:
- Créer un programme en Pascal qui calcul la somme des entiers paires et la somme des entiers impaires contenu dans l'intervalle [0;X] ou X appartient a l'ensemble des entiers naturel et X un nombre de 4 chiffres.
- Ou calculer la somme des chiffres paires et la somme des chiffres impaires constituant un entier X de 4 chiffres.
- Ou encore calculer la somme des chiffres se trouvant en position paires et la somme des chiffres en position impaires dans un nombre X a 4 chiffres.
Lequel des deux (il faut préciser et désolé si je suis un peu incompréhensible)?
Dans tous les cas ce qu'il y-a en bas va sûrement t'aider.
Ce qu'il y-a en bas vient de moi de l'instant ou j'ai poster le message du coup je ne suis pas sûr à 100% de leur fiabilité mais bon:
J’espère t'avoir mis sur une bonne piste (j'avoue que j'ai fait la grande partie du travail mais bon) et je suppose aussi que si ses propriétés sont vrai je ne suis pas le premier a y avoir pensé sinon si c'est le cas donne leurs mon prenom (Raoufdine). sa me ferait plus que plaisirs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Soit A un entier positif: Si A est impaire Alors ( ( A mod 2) = 1) => ( ( ( A mod 2) * A) = A) Sinon ( ( A mod 2) = 0) => ( ( ( A mod 2) * A) = 0) FinSi Si A est paire Alors ( Abs( ( A mod 2) - 1) = 1) => ( Abs( ( A mod 2) - 1) * A = A) Sinon ( Abs( ( A mod 2) - 1) = 0) => ( Abs( ( A mod 2) - 1) * A = 0) FinSi mod: modulo ou reste de la division euclidienne Abs(X): Valeur absolue de X => : Implication
Dernière modification par Invité ; 03/11/2015 à 16h34.
salut
effectivement comme le fait remarquer ratator on utilise la propriété du modulo de 2 dont le résultat ne peut être que 1 ou 0
le modulo étant le reste de la division
donc selon que le reste est 0 chiffre paire ou 1 chiffre impaire
le seconde propriété que tu utilise ici c'est celle des coefficient multiplicateur 0 ou 1
si le coef est 1 alors la valeur est égale à sa valeur
si le coef est 0 alors la valeur est égale à 0
quand a l'utilisation de la valeur absolu tu l'auras compris c'est pour avoir un coef strictement positif
car 0-1 = -1 => abs(-1) = 1
voici enfin quelque exemple de solution je n'est pas utilisé de boucle pour mais une boucle while
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 res := ( A mod 2); impaire := (res * A) +(( B mod 2) * B)+(( C mod 2) * C)+((D mod 2) * D) paire := (Abs(res - 1)* A) + (Abs((B mod 2) - 1)* B) + (Abs((C mod 2) - 1)* C)+ (Abs((D mod 2) - 1)* D)
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 i:= 0; impaire := 0; paire := 0; While i < 4 do begin A := tab[i]; res := A mod 2; impaire :=impaire+ (res * A); paire :=paire + (Abs(res - 1)* A) ; inc(i); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 i:= 0; TabRes[0] := 0; TabRes[1] := 0; While i < 4 do begin A := tab[i]; res := A mod 2; TabRes[res] := TabRes[res]+ (res * A); TabRes[res] := TabRes[res]+(Abs(res - 1)* A) ; inc(i); end;
Blaise PascalNous souhaitons la vérité et nous trouvons qu'incertitude. [...]
Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
PS : n'oubliez pas le tag
Salut
Je propose le code suivant :
Pas de if, pas de for. Vu qu'il n'y a que 4 chiffres, on peut les traiter séquentiellement, l'optimisation par déroulement de boucle procède ainsi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 program SomPar; function SommeParite(Nb: Integer; Parite: Integer): Integer; { On vérifie que la parité du chiffre correspond à la somme recherchée } { Rappel : Ord(False) = 0 et Ord(True) = 1 } function Contrib1Chiffre(Chiffre: Integer): Integer; begin Contrib1Chiffre := Chiffre * Ord((Chiffre mod 2) = Parite); end; begin SommeParite := Contrib1Chiffre( Nb mod 10) + Contrib1Chiffre((Nb div 10) mod 10) + Contrib1Chiffre((Nb div 100) mod 10) + Contrib1Chiffre((Nb div 1000) mod 10); End; var Nb: Integer; begin ReadLn(Nb); WriteLn('Somme des chiffres pairs : ', SommeParite(Nb, 0)); WriteLn('Somme des chiffres impairs: ', SommeParite(Nb, 1)); End.
L'extraction des chiffres passe par une division pour ramener le chiffre qui nous intéresse au rang des unités puis par un modulo 10.
Dans la fonction Contrib1Chiffre, la fonction ne fait que retourner le chiffre si sa parité convient (Parite = 1 pour les impairs, et 0 pour les pairs) ou 0 sinon. Les valeurs retournées sont additionnées. On calcule ainsi la somme qui convient.
Cdlt
PS: merci de poster une réponse, ne serait-ce que par égard envers les personnes qui ont pris la peine de te répondre.
PS2: Quand est-ce que les professeurs vont arrêter avec Turbo Pascal, mort depuis 20 ans, FreePascal est parfait comme remplaçant, c'est pénible de se rappeler des contraintes du TP.
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager