Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
948 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  recuperer un nombre depuis une chaine de caractere

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer un nombre depuis une chaine de caractere

n°2111617
hassane04
Posté le 15-11-2011 à 21:05:13  profilanswer
 

Bonsoir  tout le monde  :hello:  
 
je devrai crée un programme qui convertie la température mais comme enter l’utilisateur doit saisir le nombre + l’unité choisie => 45c  ou 40F
le problème c’est que je ne sais pas comment prendre que la valeur numérique (45 ou 40) qu’est de type string pour l’utilisé dans une formule  
 
Merci d'avance a tout ce qui peuvent m'aide

mood
Publicité
Posté le 15-11-2011 à 21:05:13  profilanswer
 

n°2111618
Profil sup​primé
Posté le 15-11-2011 à 21:16:22  answer
 

Bonjour,
 
Une solution est de prendre les 1 à N-1 caractère de ta chaîne de longueur N
 
Avec Get_line : procedure Get_Line(Item : out String; Last : out Natural);
 
value : Temperature_Type := temperature'value(chaîne(1..Last-1));
 
Et l'unité avec
 
Char : character := Chaine(Last);


Message édité par Profil supprimé le 15-11-2011 à 21:16:49
n°2111677
hassane04
Posté le 16-11-2011 à 10:27:50  profilanswer
 

bonjour  
 
merci pour votre réponse mais en tant que je suis nouveau en ADA je connais pas grand chose sur les procédure  
en plus avec lenth(langueur) on va prendre même la langueur des espace  car l’utilisateur a le droit d'entrer  
tant  d'espace souhaité soit avant soit après son message ou entre l'unité et la valeur  
 
si tu peut me donner encore un petit coup de pousse merci encore une foi  ^^

n°2111685
Profil sup​primé
Posté le 16-11-2011 à 10:47:30  answer
 

Bon,  
 
 
Tu as donc des chaîne de de type :

  • "     25    c   "
  • "22 F"
  • "          55K"


Pour avoir la valeur d'un type à partir d'une chaîne, c'est toujours l'attribut "value", soit TYPE'value("chaine" ).
 
Pour convertir ta valeur je pense pas que les espace avant ou après change quelque chose.
Il te faut donc savoir où est le caractère d'unité pour arrêter la chaine.
 
Pour ça il te faut parcourir la chaîne en testant si le caractère est un digit numéric ou pas.
Là, la fonction Is_Digit dans Ada.Characters.Handling, fera le travail.
 
Au cas où tu souhaiterais ne récupérer que les caractère différent d'une espace, tu peux utiliser la fonction Index_Non_Blank se trouvant dans la bibliothèque Ada.Strings.Fixed.
 

n°2111807
hassane04
Posté le 16-11-2011 à 15:00:12  profilanswer
 

salut  
j'ai essayé avec le programme suivant mais j'arrive pas a attendre mon but  
 
with Ada.Text_Io;                  use Ada.Text_Io;
with Ada.Float_Text_Io;            use Ada.Float_Text_Io;
with Ada.Characters.Handling;      use Ada.Characters.Handling;
 
procedure temperatur is
   C : character ;
   value : integer;
begin  
 
    while not End_Of_Line loop
       Get(C);
           if Is_Digit(c) then
           put(c);
           New_Line;
       end if  ;  
     end loop;
   Skip_Line;
end Labo_6;
 
la compilation donne  
 en entrer on a  (  35  c)
résultat  
3
5
mais je souhaite avoir le nombre compose 35 et nn pas 3 et 5 séparer en sachant en passant par les character car les string on les a pas fait dans le cours  
si sa peu être une procédure ou fonction ça sera mieux bien sur  
 
et merci pour ton aide  
 

n°2111810
gilou
Modérateur
Modzilla
Posté le 16-11-2011 à 15:13:24  profilanswer
 

Ben jovalise t'a pourtant expliqué comment faire, c'est très compréhensible.
Il ne faut pas espérer qu'on va écrire le code à ta place ici, ce n'est pas la politique du forum.
Pour ta tentative avec un code qui n'a rien a voir avec celui proposé par jovalise, si tu veux t'engager dans cette voie, tu as récupéré les chiffres sous forme de caractères successifs, ce n'est pas bien dur de prendre un caractère numérique lorsqu'il est rencontré, en déduire le chiffre correspondant, et composer le nombre final au fur et a mesure.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2111811
Profil sup​primé
Posté le 16-11-2011 à 15:16:13  answer
 

Problème :

Citation :

le problème c’est que je ne sais pas comment prendre que la valeur numérique (45 ou 40) qu’est de type string pour l’utilisé dans une formule  


Ah t'as pas vu les chaîne, ah ben tu peux pas alors.
 
 
Si non, si non, je crois que tu peut tu peux saisir un entier, et un caractère, mais tu poura pas mettre d'espace entre l'entier et le caractère.
 
Style :

Code :
  1. with Ada.Integer_Text_Io;
  2. with Ada.Text_Io;
  3. use Ada;
  4.  
  5. procedure Temp is
  6.  
  7.   subtype Temp_Type is Integer range -2_000..180_000_000;
  8.   Value : Temp_Type := 0;
  9.   Unit : Character := ' ';
  10. begin
  11.   Integer_Text_Io.Get(Value);
  12.   Text_Io.Get(Unit);
  13.  
  14.   Integer_Text_Io.Put(Value);
  15.   Text_Io.Put(Unit);
  16.  
  17. end Temp;


 

void:Temp# ./temp  
      35
c
         35c
void:Temp#


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  recuperer un nombre depuis une chaine de caractere

 

Sujets relatifs
comment recuperer les données d'un formulaire dans un autreConvertir la date et l'heure courante en chaîne de caractères.
Copy de tableau de caractère dans un tableau de caractère.Ecrire un nombre avec un séparateur décimal locale
[resolu] comment récupérer le contenu d'un json avec jqueryCompter le nombre de doublons d'un tableau
Récuperer tous les index d'un array dans 1 variableaugmenter le nombre de bit par pixel pour le fomart GIF?
Programme pouvant récupérer le signal d'une souris apple usbRécuperer info membre Php-Mysql
Plus de sujets relatifs à : recuperer un nombre depuis une chaine de caractere


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR