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 :

[TP] Problème avec les intervalles de char


Sujet :

Turbo Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut [TP] Problème avec les intervalles de char
    Bonjour à tous,
    Je viens de m'enregistrer, mais ça fait pas mal de temps que j'utilise vos cours sur TP7, et je tiens à vous féliciter pour la clarté et l'ergonomie du site .
    Actuellement, un problème me hante jour et nuit jusqu'à dans mon sommeil . J'ai cherché absolument partout sans trouver ...
    En fait, je veux utiliser la procédure de trim, mais j'aimerais qu'elle soit active à l'intérieur du mot, contrairement à la fonction première d'un trim qui est de virer les espace (#32) au début ou à la fin d'un mot.
    Mais j'aimerais également qu'elle ne supprime pas que les espaces .....
    mais toutes ponctuations possible, c'est à dire les caractères d'intervalles
    [#0;#47], [#58..#64], [#91..#96] et [#123..#255].

    En fait pour que cela soit plus clair, voici la fonction(obligatoire pour mon programme ...) que j'ai créée mais qui ne marche pas :
    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
     
    Function TrimIn(var t:string):string;
       var j:byte; x:integer; z:[chr(0)..chr(47)];
           y:[#58..#64]; w:[#91..#96];
           v:[#123..#255];
       Begin
       x:=length(t);
       for j:=1 to length(t) do
          begin
          while (length(t)>0) and (t[j]=z) or (t[j]=y) or (t[j]=w) or
          (t[j]=v) do
     
             delete(t,j,1);
             x:=x-1;
          end;
       End;
    En fait, je suppose que c'est un peu plus complexe que mon idée, mais ça fait un paquet de temps que je cherche la réponse à ce problème, en vain...

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    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
    Function TrimIn(t : string) :string;
       var j:byte; x:integer; z:[chr(0)..chr(47)];
           y:[#58..#64]; w:[#91..#96];
           v:[#123..#255];
           temp : byte;
       Begin
     
       tab := copie_locale(t);
       x:=length(tab);
       for j:=1 to x do
          begin
              temp = ord(t[j]);
              if ((temp in 58..64) and ...) then begin 
                 delete(tab,j,1);
                 x:=x-1;
              end;
          end;
     
          TrimIn := tab;
       End;

    bien sûr faut que tu complétes...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 419
    Points
    59 419
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    Pour des raisons de performances, il n'est pas indiqué d'utiliser des fonctions de traitement de chaînes comme Delete.
    Parmi plusieurs possibilités, tu peux par exemple recopier, octet par octet, les caractères permis de la chaîne source vers la chaîne résultat. Ca peut donner quelque chose comme ceci :
    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
    Function TrimIn (Chaine : String) : String;
    Var Resultat : String;
        IndexChaine, IndexResultat : Byte;
    Begin
      IndexChaine := 1;
      IndexResultat := 0;
      while IndexChaine <= Length(Chaine) do
        begin
          if not (Chaine[IndexChaine] in [#0..#47,#58..#64,#91..#96,#123..#255])
             then
               begin
                 Inc(IndexResultat);
                 Resultat[IndexResultat] := Chaine[IndexChaine];
               end;
          Inc(IndexChaine);
        end;
      Resultat[0] := Char(IndexResultat);
      TrimIn := Resultat;
    End;
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut ..
    To Gorgonite ---> Merci pour ta réponse et ton idée,
    seulement le problème, le voici :
    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
    Function BalayageIn(t:string):string;
       var j:byte; x:integer; z:chr(0)..chr(47); y:#58..#64; w:#91..#96;
           v:#123..#255; temp:byte; tab:string;
     
       Begin
       tab:=t;
       x:=length(tab);
       for j:=1 to x do
          begin
             temp:=ord(t[j]);
             if((temp in #58..#64) and (temp in #91..#96) and (temp in #0..#47)
             and (temp in #123..#255) then 
             begin;
                delete(t,j,1);
                x:=x-1;
             end;
          end;
          TrimIn:=tab;
       End;
    Quand je lance le compilateur, l'erreur se produit dans l'expression Temp in, dès le premier..., en disant "Operand types do not match opérator".
    Ne faut il pas plutôt mettre while au lieu de if ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Alcatîz, ton idée fonctionne !!!
    Mais en fait, je crois qu'elle n'est pas appropriée à mon programme (dsl je débute en TurboPascal ... ).
    En fait ce programme doit demander un numéro de 10 chiffres, séparé ou non de ponctuation plus ou moins régulière, mais qui ne contient pas de lettres. Si le numéro est correct, il le renvoie formaté "00.00.00.00.00". Voici donc le code de mon programme (avec tes modifications ):
    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
    program Téléphone;
    uses crt;
    var
       s:string;
       i,k,j:byte;
     
     
    Function BalayageIn(chaine:string):string;
       var Resultat:string;
           IndexChaine, IndexResultat: byte;
    Begin
       IndexChaine := 1;
       IndexResultat := 0;
       while IndexChaine <= Length(chaine) do
          begin
             if not (Chaine[IndexChaine] in [#0..#47,#58..#64,#91..#96,#123..#255])
             then
                begin;
                   Inc(IndexResultat);;
                   Resultat[IndexResultat] := Chaine[IndexChaine];
                end;
             Inc(IndexChaine);
          end;
       Resultat[0] := Char(IndexResultat);
       BalayageIn := Resultat;
    End;
     
     
    Procedure Test(f:string);
       var n:byte;
       Begin
          if length(f)<10 then
                writeln('Pas assez de chiffre ! ')
     
          else
          if length(f)>10 then
             writeln('Trop de chiffre ! ')
       End;
     
     
    Procedure Format_Points(var t:string; a:string);
       begin
       a:='.';
       t:='0000000000';
       insert(a,t,3); insert(a,t,6); insert(a,t,9); insert(a,t,12);
       write(t);
       end;
     
    Begin
     
    clrscr;
    k:=1; i:=10;
     
    repeat
     
          writeln('Saisir le numéro de téléphone : ');
          readln(s);
     
          BalayageIn(s);
          length(balayageIn(s)):=length(s);
          Test(s);
     
     
    until length(s)=i;
     
    Format_Points(s,'.');
    readln;
     
    End.
    Je n'arrive pas à cerner l'erreur ...... Et une partie du programme me reste inconnue .. Comment reconnaître les lettres et les chiffres de la chaîne 's' ?
    Même procédé que le Trim ??

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut svp....
    je viens de me rendre compte que le temps m'était compté pour la résolution de ce programme ..... j'espère qu'au moins l'un d'entre vous saura bientôt m'éclairer la voie !!..............

    En tout cas, la seule erreur que je remarque est à la ligne :
    "length(balayage(s)):=length(s)"

    Je pense que la syntaxe est incorrecte, puisque la longueur de la chaine (s) "balayée" ne devient pas celle de la chaine (s) d'origine ... en gros :

    → Comment rédiger "length(balayage(s)):=length(s)" en syntaxiquement correct ...

    → Comment peut-on différencier les chiffres et les lettres dans une variable string ???

    Merci d'avance et merci de ce que vous avez déjà fait

  7. #7
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    salut je veux bien t'aider mais explique clairement ton probléme parceque je n'ai rien compris dis moi si jeme trompe tu dois faire un prog qui demande à l'uilisateur d'entrer un numéro de telephone qui ne depasse pas 10 chiffres et si il y'a un espace ou une quelconque marque de ponctuation il enleve .et ensuite il retourne ca 00.00.00.00.00
    au passage dans ton code je te signale une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    length(balayageIn(s)):=length(s);//tu peux pas affecter une longeur de chaine à une autre chaine :?
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    tu as raison je n'était pas très clair, en pensant pourtant l'être ..
    mais tu as en fait bien compris l'énoncé du programme, sauf que le numéro doit être strictement égal ( ) à 10.
    En fait mon problème se résume aux deux questions commençant par des → dans mon avant dernier post
    si tu n'as toujours pas compris ce que je veux dire redis le moi

    P.S: l'erreur que tu m'as signalée en est effectivement une, mais elle est compilable, et j'aimerais simplement savoir comment rédiger autrement cette idée

  9. #9
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    Pour ta première question explique clairement ce que tu veux faire parceque tu ne peux pas changer la longeur d'une chaine par une simple affectation
    pour ta deuxième question eh ben c'est simple tu devra tester à chaque foie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    case chaine[i] of
    '0'
    '1'
    '2'
    ........
    '9'
    end;
    je suis la pour t'aider
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Pour la première question, en fait je cherche simplement à remplacer la longueur de s par la longueur de la chaîne obtenue par la fonction "balayageIn" .... lol je ne sais pas comment le dire autrement

    Pour la deuxième quetsion, merci de ton aide, c'est la technique à utiliser !! Mais dans mon cas il faudrait que je fasse cela avec toutes les lettres plutôt qu'avec les chiffres ... N'y a-t-il pas un "not" pour les Case Of ?

  11. #11
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    Mais tu peux pas faire ca tu peux pas changer la longeur d'une chaine par une simple affectation explique ton but parceque j'ai pas su le but de cette manip
    et devellope un peu plus sur la deuxième question stp parceque la soit c'est moi qui comprend plus rien soit c'est toi qui explique mal
    donne nous plus de détail .
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  12. #12
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 419
    Points
    59 419
    Billets dans le blog
    2
    Par défaut
    Tu n'es pas loin de la solution !
    Pour que ton programme fonctionne, il faut enlever les morceaux de code mis en commentaires :
    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
    program Telephone;
    uses crt;
    var
       s:string;
       i,k,j:byte;
     
     
    Function BalayageIn(chaine:string):string;
       var Resultat:string;
           IndexChaine, IndexResultat: byte;
    Begin
       IndexChaine := 1;
       IndexResultat := 0;
       while IndexChaine <= Length(chaine) do
          begin
             if not (Chaine[IndexChaine] in [#0..#47,#58..#64,#91..#96,#123..#255])
             then
                begin;
                   Inc(IndexResultat);;
                   Resultat[IndexResultat] := Chaine[IndexChaine];
                end;
             Inc(IndexChaine);
          end;
       Resultat[0] := Char(IndexResultat);
       BalayageIn := Resultat;
    End;
     
     
    Procedure Test(f:string);
       var n:byte;
       Begin
          if length(f)<10 then
                writeln('Pas assez de chiffre ! ')
     
          else
          if length(f)>10 then
             writeln('Trop de chiffre ! ')
       End;
     
     
    Procedure Format_Points(var t:string; a:string);
       begin
    {
       a:='.';
       t:='0000000000';
    }
       insert(a,t,3); insert(a,t,6); insert(a,t,9); insert(a,t,12);
       write(t);
       end;
     
    Begin
    clrscr;
    {k:=1}; i:=10;
     
    repeat
     
          writeln('Saisir le numéro de téléphone : ');
          readln(s);
     
          s := BalayageIn(s);
    {
          length(balayageIn(s)):=length(s);
    }
          writeln(s);
          Test(s);
     
     
    until length(s)=i;
     
    Format_Points(s,'.');
    readln;
     
    End.
    La bonne manière d'utiliser ta fonction BalayageIn est :
    Elle retourne comme résultat la chaîne modifiée.

    Dans la procédure Format_Points, tu commences par remplacer la chaîne par '0000000000' donc il n'y a rien de surprenant à ce qu'elle ne retourne que des zéros ! De plus pas besoin de réaffecter '.' à la chaîne a puisque c'est déjà transmis comme paramètre.

    Pour terminer, si je peux me permettre, une remarque générale qui pourrait t'aider dans le futur : essaye de donner à tes variables un nom représentatif.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Je vais tenter de faire le plus clair possible :

    → La fonction balayageIn modifie la longueur du numéro tapé par l'utilisateur, tu es d'accord ? En fait, je voudrait simplement que la longueur de (s) prenne la valeur de la longueur de (t) → modifiée dans balayageIn ..

    → Si le "numéro" donné par l'utilisateur a de la ponctuation, elle sera donc supprimée ( par BalayageIn ) . Mais si il contient des lettres, le programme devra les détecter et envoyer un message d'erreur (Du style : "Numéro Erroné".).

    En fait si vous trouvez des réponses à ces questions, indiquez s'il vous plaît où les placer dans mon programme, ça sera plus clair pour moi

    Merci d'avance. J'espère avoir été clair ...

    P.S: Je vais manger un p'tit coup je ne serais pas long

  14. #14
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    J'ai fait quelques modif et maintenant il marche normalement
    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
     
    program Telephone;
    uses crt;
    var
       s:string;
       i,k,j:byte;
     
     
    Function BalayageIn(chaine:string):string;
       var Resultat:string;
           IndexChaine, IndexResultat: byte;
    Begin
       IndexChaine := 1;
       IndexResultat := 0;
       while IndexChaine <= Length(chaine) do
          begin
             if not (Chaine[IndexChaine] in [#0..#47,#58..#64,#91..#96,#123..#255])
             then
                begin;
                   Inc(IndexResultat);;
                   Resultat[IndexResultat] := Chaine[IndexChaine];
                end;
             Inc(IndexChaine);
          end;
       Resultat[0] := Char(IndexResultat);
       BalayageIn := Resultat;
    End;
     
     
    Procedure Test(f:string);
       var n:byte;
       Begin
          if length(f)<10 then
                writeln('Pas assez de chiffre ! ')
     
          else
          if length(f)>10 then
             writeln('Trop de chiffre ! ')
       End;
     
     
    Procedure Format_Points(var t:string; a:string);
       begin
    {
       a:='.';
       t:='0000000000';
    }
       insert(a,t,3); insert(a,t,6); insert(a,t,9); insert(a,t,12);
       write(t);
       end;
     
    Begin
    clrscr;
    {k:=1}; i:=10;
     
    repeat
     
          writeln('Saisir le numéro de téléphone : ');
          readln(s);
     
          s := BalayageIn(s);
     
     
          writeln(s);
          Test(s);
     
     
    until length(s)=i;
     
    Format_Points(s,'.');
    readln;
     
    End.
    Meme remaque qu'alcatiz c'est pour cela que ca t'afficher des 00 et si tu mettais un espace dans ta chaine il s'enlevais pas.
    tiens nous au courant
    ps:bonne apetit
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    Pour moi ça ne marche pas du tout quand je tape le numéro, qu'il soit correct ou non, ça m'écrit toute la ponctuation comment ce fais-ce ?

    De plus, êtes vous sur que pour que cela m'affiche "00.00.00.00.00" quand le numéro est correct, il faut que je mette "t:='0000000000' entre crochet ??? (c'est à dire ne pas mettre t:=0000000000 )

  16. #16
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    Chez il marche trés bien
    exemple si je fais entrer un 1,25.5874589 ca m'affiche 12.55.87.45.89..
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  17. #17
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 939
    Points : 59 419
    Points
    59 419
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Petrucci
    De plus, êtes vous sur que pour que cela m'affiche "00.00.00.00.00" quand le numéro est correct, il faut que je mette "t:='0000000000' entre crochet ??? (c'est à dire ne pas mettre t:=0000000000 )
    Les crochets ont été ajoutés pour transformer le code en commentaire.

    Je ne comprends plus rien à ce que tu veux faire exactement !
    Pourquoi veux-tu afficher 00.00.00.00.00 ?

    Citation Envoyé par Petrucci
    → Comment rédiger "length(balayage(s)):=length(s)" en syntaxiquement correct ...
    Comme l'a dit Diden138, cette instruction n'a aucun sens. Dans
    la longueur de s après cette instruction est correcte. Voir la dernière ligne de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat[0] := Char(IndexResultat);
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    VEUILLEZ M'EXCUSER !!
    j'avais pas modifié un truc !!
    et j'avais pas pigé que le zéro de la forme formatée était un exemple ... désolé lol !!
    Enfin Bref, il reste toujours un problème non résolu ....
    Celui de reconnaître s'il y a des lettres ou non dans le numéro (donné par l'utilisateur) .... J'ai déjà essayé avec case of mais je n'arrive pas à bien savoir où le placer ...
    En tout cas merci pour tout !!

  19. #19
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re:
    ajoute la dans la procedure test
    >tu test si ton chiffre ne contient pas de lettre
    >tu vérifie si il y'a plus 10 chiffres
    >tu si il y'a moins de 10 chiffre et c'est tout ,c'est simple.
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 19
    Points
    19
    Par défaut
    bah oué ça je sais t'inquiète, le problème c'est que je sais pas comment l'écrire ... du moins j'ai pas encore le réflexe ... désolé de vous embêter avec ça lol ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/11/2012, 08h24
  2. Erreur de compilation avec les string et char*
    Par number9 dans le forum C++
    Réponses: 3
    Dernier message: 30/04/2012, 09h58
  3. [XL-2007] Probl formule avec des intervales de dates
    Par alexandrek dans le forum Excel
    Réponses: 0
    Dernier message: 09/02/2011, 11h56
  4. Problème avec les tableaux de char.
    Par Letinono dans le forum Débuter
    Réponses: 3
    Dernier message: 29/05/2008, 16h24
  5. probl. avec les tableaux d'indices de sommets
    Par kagemusha dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/07/2006, 19h41

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