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

Langage Pascal Discussion :

Tableau de chaînes de caractères [Non suivi]


Sujet :

Langage Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Tableau de chaînes de caractères
    Salut, comment écrire une procédure qui découpe un texte en une serie de chaînes de caractères <25 et les range dans un tableau "chaine" ?

    Aussi comment écrire une fonction fusion qui fusionne 2 tableaux de chaînes de caractères déja triés ?
    Aidez-moi svp, j'ai essayé mais j'ai pas réussi. Merci.


    Modération par Wormful_sickfoot :
    - Titre modifié
    Merci de lire les règles du forum.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 308
    Points
    4 308
    Par défaut
    As-tu déjà écrit un code ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oui mais ça ne marche pas encore.

    Voici tout le programme essai.

    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    program text;
    uses crt;
    const n=30;
    type frequence=array&#91;'a'..'z'&#93; of integer;
         texte= string&#91;255&#93;;
         tableau=array&#91;1..50&#93; of string;
         t_chaine=array&#91;1..50&#93; of texte;
         table=array&#91;1..60&#93; of integer;
    var fr&#58;frequence;
        ch&#58;texte;
        t_ch&#58;t_chaine;
    procedure saisie&#40; var y&#58;texte&#41;;
    begin
    writeln &#40;'donne votre texte'&#41;;
    readln&#40;y&#41;
    end;
     
     
    procedure freq&#40;v&#58;texte;f&#58;frequence&#41;;
    var i&#58;char;
        j&#58;integer;
     
     
        begin
        for i&#58;='a' to 'z' do
           f&#91;i&#93;&#58;=0;
        for i&#58;='a' to 'z'do
        for j&#58;=1 to length&#40;v&#41; do
            if v&#91;j&#93;=i then    f&#91;i&#93;&#58;=f&#91;i&#93;+1;
            for i&#58;= 'a' to 'z' do
     
        writeln&#40;i,'----------->',f&#91;i&#93;&#41;
     
        end;
        &#123;=======================procedure change================================&#125;
        &#123;procedure change&#40;i,j&#58;integer;var f&#58;table&#41;;
           var d&#58;integer;
         begin
         d&#58;=f&#91;i&#93;;
         f&#91;i&#93;&#58;=f&#91;j&#93;;
         f&#91;j&#93;&#58;=d;
         end;&#125;
     
     
        &#123;******************************del**********************************&#125;
         function del&#40;var X&#58;texte&#41;&#58;texte;
         var i,l&#58;integer;
         begin
         l&#58;=length&#40;X&#41;;
         for i&#58;=1 to length&#40;X&#41; do
         begin
         if x&#91;i&#93;=' ' then
         begin
                      delete&#40;x,i,1&#41;;
                      l&#58;=l-1;
                      i&#58;=i-1
                      end
         end;
         del&#58;=X
     
         end;
         &#123;==========================procedure tri=============================&#125;
         procedure tri_croissant&#40;var x&#58;tableau;nbrc&#58;integer&#41;;
         var i,m,j,l&#58;integer;
              z&#58;texte;
     
           begin
           l&#58;=&#123;length&#40;x&#41;&#125;nbrc;
          for i&#58;= 1 to l-1 do
         begin
         m&#58;=i;
     
         for j&#58;=i+1 to l do
     
         if x&#91;j&#93;<x&#91;m&#93; then
         begin
     
        m&#58;=j;
        z&#58;=x&#91;j&#93;;
        x&#91;j&#93;&#58;=x&#91;m&#93;;
        x&#91;m&#93;&#58;=z
        &#123;change&#40;i,m,x&#41;; &#125;
        end
        end
        end;
     
     
          &#123;==========================DIV======================================&#125;
          procedure dive&#40;s&#58;texte;var b&#58;t_chaine&#41;;
          var i,j&#58;integer;
          begin
           i&#58;=1 ;
           j&#58;=1;
           while &#40;i<length&#40;s&#41;&#41; do
            begin
             b&#91;j&#93;&#58;=copy&#40;s,i,4&#41;;
     
             i&#58;=i+4;
             j&#58;=j+1;
     
           &#123;writeln&#40;'la nouvelle chaine est&#58;',s&#41;;&#125;
           &#123; writeln&#40;'la nouvelle chaine est&#58;',k&#41;&#125;
            end
           end;
     
    &#123;==============procedurefusion======================&#125;
    procedure fusion&#40;t1,t2&#58;t_chaine;tal1,tal2&#58;integer;var t&#58;t_chaine&#41;;
    var i,j,k,k1 &#58;integer;
     
     begin
      i&#58;=1;j&#58;=1;k&#58;=1;
      tal1&#58;=length&#40;t1&#41;;tal2&#58;=length&#40;t2&#41;;
      while&#40;i<=tal1&#41;and &#40;j<=tal2&#41; do
           if &#40;t1&#91;i&#93;<t2&#91;j&#93;&#41; then
               begin
                t&#91;k&#93;&#58;=t1&#91;i&#93;;
                 i&#58;=i+1;
                  k&#58;=k+1;
               end
                 else
                   begin
                    t&#91;k&#93;&#58;=t2&#91;j&#93;;
                    j&#58;=j+1;
                    k&#58;=k+1;
                   end;
                    if &#40;i>tal1&#41; then
                     for k1&#58;=j to tal2 do
                       begin
                        t&#91;k&#93;&#58;=t2&#91;k1&#93;;
                        k&#58;=k+1;
                       end
                          else
                               for k1&#58;=i to tal1 do
                                begin
                                 t&#91;k&#93;&#58;=t1&#91;k1&#93;;
                                  k&#58;=k+1
                                end
               end;
     
     
    &#123;=================================programme principal==========================&#125;
     
       var c,t_ch1,t_ch2,t_ch3&#58;t_chaine;d,h&#58;integer;
     
     begin
         clrscr;
      saisie&#40;ch&#41;;
     
      freq&#40;ch,fr&#41;;
      del&#40;ch&#41;;
      readln;
      writeln&#40;ch&#41;;
      readln;
      dive&#40;ch,c&#41;;
      writeln&#40;ch&#41;;
      saisie&#40;ch&#41;;
      saisie&#40;ch&#41;;
     
      fusion&#40;t_ch1,t_ch2,h,d,t_ch3&#41;;
      readln;
      writeln&#40;ch&#41;;
      readln;
      readln
     
     end.

    Modération par Wormful_sickfoot :
    - Balises code ajoutées
    Merci de lire les règles du forum.

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    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 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Les procédures SAISIE, FREQ et DIVE semblent correctes.
    Par contre, dans FUSION, il me semble que tu dois créer un compteur supplémentaire (l, par exemple) et créer une boucle qui encadre toutes les autres pour faire la fusion de chacune des 50 chaînes de chaque tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      for l &#58;= 1 to 50 do
        begin
          i &#58;= 1;
          j &#58;= 1;
          k &#58;= 1;
          tal1 &#58;= Length&#40;t1&#91;l&#93;&#41;;
          tal2 &#58;= Length&#40;t2&#91;l&#93;&#41;;
          ... etc
        end;
    Pour tester la fusion, ton programme principal ne convient pas.
    Il faudrait remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      SAISIE&#40;ch&#41;;
      SAISIE&#40;ch&#41;;
    (soit dit en passant, la deuxième lecture écrase la première)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      SAISIE&#40;ch&#41;;
      DEL&#40;ch&#41;;
      DIVE&#40;ch,t_ch1&#41;;
      SAISIE&#40;ch&#41;;
      DEL&#40;ch&#41;;
      DIVE&#40;ch,t_ch2&#41;;
    Bon courage !
    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]

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/04/2008, 21h48
  2. Tableau de chaînes de caractères
    Par inh40 dans le forum C++
    Réponses: 15
    Dernier message: 15/04/2008, 18h56
  3. Réponses: 13
    Dernier message: 18/07/2007, 10h01
  4. Tableau de chaînes de caractères
    Par sone47 dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/02/2007, 15h54
  5. tableau de chaîne de caractères
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 11/09/2006, 18h23

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