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 :

Exercice sur les tableaux


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut Exercice sur les tableaux
    Bonjour à tous

    voici un exercice d'algorithmique qui traite les tableaux:

    Soit T un tableau d'entiers de taille N. Une série dans T est une suite d'éléments consécutifs et égaux de T. le problème consiste à trouver la plus longue série dans T, l'indice de son premier élément et sa longueur

    Par exemple

    T 2 2 6 6 6 6 9 9 9 9 9 1 0 0 0

    le programme affichera la série est 9 elle commence à l'indice 7 et elle est de longueur 5


    Voici ma proposition
    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
    uses wincrt;
    type
    tab=array[1..100] of integer;
    var
    m,v,t:tab;
    j,i, p, nbmax,posi,nb,n:integer;
     
    begin
    write('siaisr N= ');
    readln(n);
    for i:=1 to n do
    begin
    write('T[',i,']=');
    readln(t[i]);
    end;
     
    i:=1;
    nb:=1;
    repeat
     
     
    nb:=nb+1;
    i:=i+1;
     
     
    until (t[i]<>t[i+1]);
     
    j:=i+1;
    nbmax:=1;
    posi:=1;
    repeat
     
    if t[j]=t[j+1] then
     
    begin
     
    nbmax:=nbmax+1;
    j:=j+1;
     
    end;
     
    p:=j;
     
     
    until (t[j]<>t[j+1]) or (j>=n-1);
     
    if nb>nbmax then
    begin
    nbmax:=nb;
    p:=i;
    posi:=1;
    end
    else
    posi:=i+1;
     
    writeln('la serie est: ',t[p], ' l''indice ',posi, ' la longueur est: ',nbmax);
     
     
    end.
    ce programme tourne correctement, mais il affiche dans tous les cas la série d'indice 2

    Pouvez vous m'aider ?

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Pense à la balise code la rochaine fois.
    Tu as le 2 à cause de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    repeat
     nb:=nb+1;
     i:=i+1;
    until (t[i]<>t[i+1]);
    En fait c'est pas toujours deux, mais nb prend l'indice du premier caractere different de t[1]. et dans ton cas c'est 2.
    je n'est pas lu le reste du code mais tres mal presenté (identation,...). Mais je crois que tu auras du mal à t-en tirer si tu vas dans ce sens.

    Essaie de mediter sur ce code :
    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
     
    program Project1;
     
    type
         tab=array[1..100] of integer;
    var
        t : tab;
        nbre, n, i, fin, max :integer;
     
    begin
     repeat
      write('siaisr N= ');
      readln(n);
     until (n>0) and (n<100);
     
     {remplissage du tableau}
     for i:=1 to n do
      begin
      write('T[',i,']=');
      readln(t[i]);
      end;
     
    {}
     fin:=1;
     nbre:=1;
     max:=1;
    for i:=2 to n do
     begin
     if (t[i]=t[i-1]) then
      nbre:=nbre+1
     else
      nbre:=1;
     if nbre>max then
      begin
      max:=nbre;
      fin:=i;
      end;
     end;
     
     writeln('la serie est: ',t[fin], ' l''indice ',fin-max+1, ' la longueur est: ',max);
     readln;
     
    end.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    Merci énormément darrylsite

Discussions similaires

  1. Exercice sur les tableaux
    Par haha1 dans le forum Pascal
    Réponses: 5
    Dernier message: 27/12/2008, 20h13
  2. aide pour un exercice sur les tableaux
    Par mimiif dans le forum Caml
    Réponses: 9
    Dernier message: 30/05/2008, 15h49
  3. Réponses: 11
    Dernier message: 04/02/2008, 20h37
  4. Exercice sur les tableaux
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 06/11/2006, 19h33

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