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 :

Insérer des zéros dans un entier de trois chiffres


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1
    Par défaut Insérer des zéros dans un entier de trois chiffres
    Bonjour,
    je suis un débutant en Pascal et je veux faire un exercice dont l'énoncé est le suivant : écrire un programme Pascal qui lit un entier formé de trois chiffres et insère le chiffre zéro (0) entre les chiffres de l'entier (il faut utiliser les fonctions div et mod).

    Exemple : N=125 le resultat est N=10205

    j'ai pensé à utiliser les tableaux mais on doit utiliser les fonctions div et mod.
    Aidez-moi s'il vous plaît.

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Salut,

    Tu peux extraire les chiffre du nombre 125 => 1, 2, 3. Ce que tu peux realiser faciler avec les div et les mod. C'est pas bien compliqué, il suffit de savoir comment on ecrit un nombre en base 10 : 125=1*10^2+2*10^1+5.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Par défaut
    Converti ton nombre en string
    Citation Envoyé par fujitsu04 Voir le message
    Bonjour,
    je suis un débutant en Pascal et je veux faire un exercice dont l'énoncé est le suivant : écrire un programme Pascal qui lit un entier formé de trois chiffres et insère le chiffre zéro (0) entre les chiffres de l'entier (il faut utiliser les fonctions div et mod).

    Exemple : N=125 le resultat est N=10205

    j'ai pensé à utiliser les tableaux mais on doit utiliser les fonctions div et mod.
    Aidez-moi s'il vous plaît.

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Citation Envoyé par vitipi Voir le message
    Converti ton nombre en string
    certainement pas, il doit utiliser les mod et les div si tu as bien lu l'enoncé. Ceci est dit, je pense pour l'obliger à ne pas utiliser les string.

    Si on reflechit un peu, on peut arriver à demontrer que le nombre resultant de la transformation peut etre obtenu en multipliant les exposant des puissance de 10 par deux dans la decomposition sous forme des puissance de 10 dudit nombre. Je pourrais faire la demontration si vous le souhaiter.

    Ex: 125 = 1*10^2 +2*10^1 + 5*10^0
    10205= 1*10^4 +2*10^2 + 5*10^0

    1254 = 1*10^3 + 2*10^2 + 5*10^1 + 4*10^0
    1020504 = 1*10^6 + 2*10^4 + 5*10^2 + 4*10^0

  5. #5
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    N = 125
    R = 102050

    N(5) = N mod 10
    N(2) = (N div 10) mod 10
    N(1) = (N div 100) mod 10

    puis

    R = N(5) * 10 + N(2) * 1000 + N(1) * 100000


    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    type
      TNInt = 0..999;
     
    function ForceRose(const N: TNInt): integer;
    var A, B, C : byte;
    begin
      A := N mod 10;
      B := (N div 10) mod 10;
      C := N div 100;
      ForceRose := A*10 + B*1000 + C*100000;
    end;
    on limite a trois chiffre sinon :

    + D * 10 000 000
    N max = 9 999

    + E * 1 000 000 000
    E en dehors des limites integer
    N max integer = 29 999
    E en dehors des limites cardinal
    N max cardinal = 49 999

    + F * 100 000 000 000
    F necessite int64
    N max = 999 999

    + G * 10 000 000 000 000
    G necessite int64
    N max = 9 999 999

    + H * 1 000 000 000 000 000
    H necessite int64
    N max = 99 999 999

    + I * 100 000 000 000 000 000
    I necessite int64
    N max = 999 999 999

    + J * 10 000 000 000 000 000 000
    J a la limite de int64
    N max int64 = 9 299 999 999
    N max UInt64 = 9 999 999 999

    + K * 1 000 000 000 000 000 000 000
    K en dehors des limite d'int64
    K en dehors des limites d'UInt64
    K necessite int128 (n'existe pas)
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  6. #6
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    J'aime bien le nom de la fonction
    J'ai apporté une petite touche à cette fonction pour prendre ne compte tous les nombres. Mais si il y a un depacement de capacité je
    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
     
    function pow(a, n: integer) : integer;
       var i, s : integer;
      begin
       s:=1;
       for i:=1 to n do
        s:=s*a;
       pow:=s;
      end;
     
      function ForceBleu(N: TNInt): integer;
      var a :integer;
          i : byte;
      begin
       i:=0;
       a:=0;
       while n<>0 do
        begin
         a:=a+(n mod 10)*pow(10,i*2);
         writeln(a);
         inc(i);
         n:= n div 10;
        end;
     
       ForceBleu := a;
      end;

Discussions similaires

  1. Insérer des Jpeg dans une BDD
    Par KRis dans le forum Bases de données
    Réponses: 8
    Dernier message: 19/03/2009, 19h16
  2. Insérer des images dans outlook
    Par bobic dans le forum ASP
    Réponses: 3
    Dernier message: 29/12/2005, 16h11
  3. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45
  4. Réponses: 2
    Dernier message: 08/08/2005, 13h54
  5. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/2004, 09h18

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