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

Pascal Discussion :

Compter les occurences dans un tableau trié


Sujet :

Pascal

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Points : 50
    Points
    50
    Par défaut Compter les occurences dans un tableau trié
    hep salut a tous

    j'ai fais un petit programme qui trie les lettres dans une chaine string

    comment faire pour que celui ci compte les occurences dans la chaine celle-ci un fois trié ??

    merci d'avance... ps c'est pour mon examen de demain alors aidez moi

    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
    program Sceance7ChaineCaractere;
     
    {scéance 7.F - Chaine caractère}
     
    {réalisation Sebastien Degreve - http://online.freezee.org}
     
     
    {-------------DECLARATION-----------------}
    var
        mot: string;
        lengths,pos,i,j: integer;
        t : array [1..26] of char;
        tampon : char;
     
    {---------------PROGRAMME-------------------}
     
    begin
      writeln('entrez une chaine de caracteres');
      readln(mot);
      lengths := length(mot);
      for i:=1 to lengths do
       begin
         t[i] := upcase(mot[i]);
       end;
     for i:=1 to lengths-1 do
      begin
       pos:=i;
       for j:=i+1 to lengths do
        if t[j]<t[pos] then pos:=j;
         if pos<>i
         then
         begin
         tampon:=t[i];
         t[i]:=t[pos];
         t[pos]:=tampon;
         end;
        end;
       for i:=1 to lengths do
        begin
        write(t[i]);
        write(' ');
        end;
     readln;
    end.

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    Citation Envoyé par degseb
    comment faire pour que celui ci compte les occurences dans la chaine celle-ci un fois trié ??
    Je crois cette genre de question à été deja traité sur le forum peut etre une recherche te le dira.
    Sinon tu peux faire une tableau des 26 lettres de l'aphabet et dont tu mettras à chaque correspondance une incrementation suivant son occurence dans la chaine.
    Mais avec ta chaine triée ça devrait etre plus facile à realiser.
    Penses un petit algo et on vera ce que ça donne
    @+
    ps c'est pour mon examen de demain alors aidez moi
    Tu n'avais pas besion de le preciser , alors plus vite tu montrera tes efforts plus vite tu auras de reponses
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gio,

    Il faudrait éclater ton code en différentes fonctions, ça le rendra plus clair et plus facile à faire pour toi.

    Pour ton problème, au lieu d'un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var
    ...
        t : array [1..26] of char;
    il vaudrait mieux :
    - déclarer un type pour ce tableau, ça permettra de le passer plus facilement à une fonction.
    - que ce tableau soit pour des Integer, plutôt que des Char, puisqu'on s'attend à faire des additions.
    - Que ce tableau soit indicé directement par les caractères, puisque Pascal le permet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type
      tableChar = Array ['A'..'Z'] of Integer;
    ...
     
    Var
      t : tableChar;
    - Il faut initialiser tout le tableau à 0 (zéro)
    - Puis, en lisant chaque caractère de ta chaine, tu incrémentes la case correspondant au caractère en cours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
      For i:=1 to Length(chaine) do
      Begin
        Inc[chaine[i]];
      End;
    Voilà, ça devrait aller.

    (Le tout avec des fonctions/procédures, chacune son travail précis à faire)
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [DeskI V5-V6] Compter les doublons dans un tableau
    Par limouzin dans le forum Débuter
    Réponses: 4
    Dernier message: 25/02/2009, 13h34
  2. Compter les occurences dans une chaîne
    Par AuBozon dans le forum Débuter
    Réponses: 3
    Dernier message: 27/04/2008, 11h17
  3. compter les occurences dans un fichier avec fgetc
    Par deathsurfer dans le forum C
    Réponses: 21
    Dernier message: 21/01/2007, 13h44
  4. Compter les occurences dans relation "n vers n"
    Par yamayo dans le forum Access
    Réponses: 3
    Dernier message: 02/10/2006, 18h54
  5. Réponses: 10
    Dernier message: 27/03/2006, 18h38

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