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 :

Conversion de chaîne en réel [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Conversion de chaîne en réel
    Salut tout le monde
    je me demande si c'est possible de convertir une chaîne qui contient par exemple sqrt(2) en un nombre réel, sachant que j'ai essayé val('sqrt(2)',x,e) mais ça n'a pas l'air de fonctionner.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Si tu mets le curseur sur le mot Val et tu fais : Ctrl + F1 tu auras ceci :
    DECLARATION:
    Procedure Val(s: string; var v; var code: Integer);
    où:
    s = variable chaîne; doit être une séquence
    de caractères représentant un entier
    .
    v = variable Integer ou Real
    code = variable Integer.
    Donc pas moyen avec les procédures et fonctions standard.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Si tu mets le curseur sur le mot Val et tu fais : Ctrl + F1 tu auras ceci : Donc pas moyen avec les procédures et fonctions standard.
    Merci Mr, vous avez raison tout le monde connait deja la structure de la procedure val, c'est sur qu'on doit trouver un moyen en dehors des outils standards oki je donne le probleme en réalité je cherche un moyen pour permettre à l'utisateur d'entrer n'importe quelle expression, afin de pouvoir traiter cette derniere faut que je trouve le moyen comment convertir cette donnée en une expression mathematique qui peut etre gérer par le TPW

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Bon après quelques essais, voici une esquisse qui pourrait t'aider , à toi de choisir ce qui te convient tout en l'adaptant selon ton besoin :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     Uses Crt;{ou bien WinCrt;}
     Const Fich='C:\Save.txt';
     VAR
        c,i,k,L:Integer;
        x:Extended;
        j:Real;
        S,ch,sch:String;
        F:Text;
    {=================================}
     Function Power10(expo:integer):Extended;
        Var Res:Extended;
        Begin
          Res :=1;
          for i:= 1 to expo Do
          begin Res := Res*10;end;
          Power10:=Res;
       End;
    {=================================}
    Function Expo_Nombre(Var n:Real):Integer;
        { Recherche de l'exposant du nombre réel généré ou entré}
       Var  Fin, L, position,I,errCode:Integer;
            S,ch:String;
            m:integer;
       Begin
         Str(n,S);
         L := Length(S);
         Position:=Pos('E',S);
         Fin:=L-Position;               
         ch:='';
         For I:=Position+1 To L Do
           begin  ch:=ch+S[i];end;
         Val(ch,m,errCode);
         Expo_Nombre:=m;
       End;
    {=================================}
    Function Read_And_Convert(Var FF:Text):Real;
      VAR
         St, ch, Ret :String;
         p,V:Integer;
      Begin
        Assign(FF,Fich);
        Reset(FF);
        ch:=''; Ret:='';
        While Not EOLN(F) DO
          Begin
           Read(F,St);
           {Writeln(St);}
          End;
       L:= Length(St)-6;
       K:= Pos('.',St);
       For I:=1 To L Do
        Begin
          If (S[i]<>'.') And (St[I]<>' ') Then
            ch:=ch+St[i];
        End;
        For p:=Pos('+',St)+1 To L+6 Do
          begin
            Ret:=Ret + St[p];
          end;
        Val(Ret,V,c);
        Val(ch,x,c);
     
        x:=x/(Power10(L-K-V));
        Close(FF);
     
        Read_And_Convert:=x;
      End;
     
    {=================================}
     Begin
       TextAttr:=Blue SHL 4 +14;ClrScr; {<== valable pour tp ou bp pour Dos}
       Assign(F,Fich);
       ReWrite(F);
       J:=Sqrt(34671925);
       Str(j,S);
       K:=Pos('.',S); {Attenstion ici : la position retournée prend en compte
                       le signe du nombre +/- même si celui-ci n'est pas écrit}
       ch:='';
       L:= Length(s)-6;  {6 correspond à la puissance de 10
                         après les différents chiffres du nombre
                         comme E+0003 car on utilise ici le type
                         Extended pour éviter les erreurs de débordement}
       for i:=1 to L Do
        Begin
          If S[i]<>'.' Then
            ch:=ch+S[i];
        End;
        {une seconde méthode de traitement(plus précise!)}
       Writeln(f,Sqrt(34671925));
       Val(ch,x,c);
       Writeln('Chaine après conversion de j : ', ch);
       Writeln('Nombre Sqrt(j) = ',J);
       x:=x/(Power10(L-K-Expo_Nombre(J)));
       {Affichage pour comparaison des résultats}
       Writeln('Valeur de x avec traitement direct du nombre J : ');
       Writeln('x = ',x);
       Close(F);
       Writeln;
       Writeln('Valeur de x lue depuis le fichier C:\save.txt ');
       Write('x = ',Read_And_Convert(F));
       Readln;
    End.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Bon après quelques essais, voici une esquisse qui pourrait t'aider , à toi de choisir ce qui te convient tout en l'adaptant selon ton besoin :
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     Uses Crt;{ou bien WinCrt;}
     Const Fich='C:\Save.txt';
     VAR
        c,i,k,L:Integer;
        x:Extended;
        j:Real;
        S,ch,sch:String;
        F:Text;
    {=================================}
     Function Power10(expo:integer):Extended;
        Var Res:Extended;
        Begin
          Res :=1;
          for i:= 1 to expo Do
          begin Res := Res*10;end;
          Power10:=Res;
       End;
    {=================================}
    Function Expo_Nombre(Var n:Real):Integer;
        { Recherche de l'exposant du nombre réel généré ou entré}
       Var  Fin, L, position,I,errCode:Integer;
            S,ch:String;
            m:integer;
       Begin
         Str(n,S);
         L := Length(S);
         Position:=Pos('E',S);
         Fin:=L-Position;               
         ch:='';
         For I:=Position+1 To L Do
           begin  ch:=ch+S[i];end;
         Val(ch,m,errCode);
         Expo_Nombre:=m;
       End;
    {=================================}
    Function Read_And_Convert(Var FF:Text):Real;
      VAR
         St, ch, Ret :String;
         p,V:Integer;
      Begin
        Assign(FF,Fich);
        Reset(FF);
        ch:=''; Ret:='';
        While Not EOLN(F) DO
          Begin
           Read(F,St);
           {Writeln(St);}
          End;
       L:= Length(St)-6;
       K:= Pos('.',St);
       For I:=1 To L Do
        Begin
          If (S[i]<>'.') And (St[I]<>' ') Then
            ch:=ch+St[i];
        End;
        For p:=Pos('+',St)+1 To L+6 Do
          begin
            Ret:=Ret + St[p];
          end;
        Val(Ret,V,c);
        Val(ch,x,c);
     
        x:=x/(Power10(L-K-V));
        Close(FF);
     
        Read_And_Convert:=x;
      End;
     
    {=================================}
     Begin
       TextAttr:=Blue SHL 4 +14;ClrScr; {<== valable pour tp ou bp pour Dos}
       Assign(F,Fich);
       ReWrite(F);
       J:=Sqrt(34671925);
       Str(j,S);
       K:=Pos('.',S); {Attenstion ici : la position retournée prend en compte
                       le signe du nombre +/- même si celui-ci n'est pas écrit}
       ch:='';
       L:= Length(s)-6;  {6 correspond à la puissance de 10
                         après les différents chiffres du nombre
                         comme E+0003 car on utilise ici le type
                         Extended pour éviter les erreurs de débordement}
       for i:=1 to L Do
        Begin
          If S[i]<>'.' Then
            ch:=ch+S[i];
        End;
        {une seconde méthode de traitement(plus précise!)}
       Writeln(f,Sqrt(34671925));
       Val(ch,x,c);
       Writeln('Chaine après conversion de j : ', ch);
       Writeln('Nombre Sqrt(j) = ',J);
       x:=x/(Power10(L-K-Expo_Nombre(J)));
       {Affichage pour comparaison des résultats}
       Writeln('Valeur de x avec traitement direct du nombre J : ');
       Writeln('x = ',x);
       Close(F);
       Writeln;
       Writeln('Valeur de x lue depuis le fichier C:\save.txt ');
       Write('x = ',Read_And_Convert(F));
       Readln;
    End.
    Merci pour votre effort Mr c'est vraiment génial

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Heureux pour toi d'avoir pu être satisfait.

    Dans ce cas, comme écrit dans ma signature : Ne pas oublier le tag si satisfait
    le bouton est juste en bas du dernier message de la page.

    Bonne continuation
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [D2006] Lecture d'un réel et conversion en chaîne
    Par paulfr dans le forum Langage
    Réponses: 14
    Dernier message: 05/06/2009, 21h58
  2. [D6 Perso] Conversion de chaînes
    Par Pill_S dans le forum Langage
    Réponses: 11
    Dernier message: 31/10/2005, 20h30
  3. [Crystal reports Version 8.x] Conversion Type chaîne en date
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2005, 14h58
  4. Conversion de chaîne en entier
    Par SkYsO dans le forum Langage
    Réponses: 4
    Dernier message: 30/08/2005, 11h43

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