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

Ada Discussion :

[Ada] Problème avec nombre supérieur à 15 caractères


Sujet :

Ada

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2004
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 16
    Points : 8
    Points
    8
    Par défaut [Ada] Problème avec nombre supérieur à 15 caractères
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    with text_io; use text_io;
    with ada.integer_text_io; use ada.integer_text_io;
     
     
    procedure Principale is
     
    -- Action :    Si le nombre est composé de n chiffres significatifs alors 
    --             les 10-n premiers caractères sont des caractères '*' et les
    --             caractères suivants sont les chiffres du nombre lu.              
    --             On va utiliser la fonction ChiffresSignificatifs et la procé-
    --             dure PremiersCaracteres.
     
    N:integer:=0;     -- Contient le résultat de 10-n. Ce résultat sert à la procédure
                      -- PremiersCaracteres pour définir la longueur de la boucle
    cpt:integer;      -- Contient le nombre de chiffres significatifs du nombre lu
    montant:integer;  -- Montant du cheque rentre au clavier par l'utiulisateur
     
       function ChiffresSignificatifs (montant: in integer) return integer is
     
          -- Pre-requis : Le nombre rentre par l'utilisateur doit comporter au maximum 10 caracteres 
          -- Resultat :   Calcule le nombre de chiffres significatifs qui composent
          --              le nombre entier lu au clavier
          -- Strategie :  Une division par dix au sein d'une boucle permet de décomposer le nombre entre au clavier,
          --              jusqu'a ce que celui ci soit inférieur a 1, au quel cas la boucle s'arrete.
          --              Un compteur placé a l'interieur de la boucle est incremente de 1 pour chaque nouvelle boucle, 
          --              ce qui nous donne au final le nombre de chiffre du nombre.                        
     
     
             cpt: integer:=0;        -- Initialise à 0. Permet de stocker le nombre de chiffres significatifs du nombre lu
             nbe: integer:=montant;  -- Initialisé à montant
     
          begin
     
              while nbe>0 loop
                cpt:=cpt+1;
                nbe:=nbe/10;    
             end loop;
             return cpt;
     
          end ChiffresSignificatifs;
     
     
       procedure PremiersCaracteres (N: in integer) is
          -- pré-requis: aucun
          -- action    : Affiche le caractère '*' sur les 15-n premiers caracteres, avec
          --             N représentant le nombre de caracteres que prend le nombre lu.
          -- stratégie : Lancer une boucle qui tourne N-15 fois pour afficher le nombre d'etoiles
          --             necessaires. (N-15 etoiles)
     
          begin
     
              for I in 1..N loop
                 put('*');
             end loop;
     
          end PremiersCaracteres;
     
     
    begin
     
       put("Veuillez entrer le montant de votre cheque : ");
       get(montant);
       N:=15-ChiffresSignificatifs(montant);
       new_line;
       PremiersCaracteres(N);
       put(montant,ChiffresSignificatifs(montant)); -- Le fait de rajouter ",ChiffresSignificatifs(montant)" a l'interieur
                                                    -- du put permet d'eviter qu'il y est un blanc entre les etoiles et le 
                                                    -- montant du cheque.
     
    end Principale;
    Le programme fonctionne tres bien seule erreur lorsque le nombre entré
    a plus de 10 caracteres normal car j'utilise Integer mais comment faire
    alors?
    J'ai essayé avec long_integer mais rien
    Merci d'avance

  2. #2
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    sans biblio spéciale, GNAT peut allé jusqu'à entier 18 chiffres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with Ada.Text_Io;
    procedure BigNombre is 
       type Grandnombre is range -999999999999999999 .. 999999999999999999;
       Gn : Grandnombre := 1;
       begin
          Gn := Gn + 1;
          Ada.Text_Io.Put_Line (Grandnombre'Image(Gn));
       end Bignombre;

Discussions similaires

  1. [SQL] Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/08/2006, 13h28
  2. Problème avec nombre d'enregistrements dans une table
    Par zana74 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/08/2006, 13h21
  3. Réponses: 5
    Dernier message: 26/07/2006, 11h13
  4. problème avec nombre au niveau forms
    Par momo9237 dans le forum Oracle
    Réponses: 2
    Dernier message: 08/11/2005, 18h22
  5. problème avec l'affichage des caractères spéciaux
    Par michelkey dans le forum Général Python
    Réponses: 4
    Dernier message: 19/08/2005, 08h09

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