IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Somme des chiffres pairs et des chiffres impairs


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Somme des chiffres pairs et des chiffres impairs
    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

  2. #2
    Invité
    Invité(e)
    Par défaut incomprehensible
    Citation Envoyé par OmarBane Voir le message
    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:
    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
    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.
    Dernière modification par Invité ; 03/11/2015 à 16h34.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 404
    Points : 5 790
    Points
    5 790
    Par défaut
    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
    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;
    ou
    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;
    Nous 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.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 550
    Points : 3 916
    Points
    3 916
    Par défaut
    Salut

    Je propose le code suivant :

    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.
    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.
    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."

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/12/2010, 17h50
  2. Fonction de calcul de somme des chiffres d'un entier
    Par sam343 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2009, 18h35
  3. template XSL qui calcule la somme des chiffres d'un nombre
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/04/2009, 15h55
  4. Réponses: 3
    Dernier message: 01/04/2009, 12h51
  5. Réponses: 6
    Dernier message: 01/02/2009, 01h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo