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 :

Programme d'exploitation de tableau à résoudre


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Par défaut Programme d'exploitation de tableau à résoudre
    Salut; c'est Imi, je suis en terminale et le prof nous a demandé de résoudre ce problème qui est un peu difficile; alors si vous êtes interessés aidez-moi:Merci d'avance et voici le sujet:
    Soit T un tableau de n entiers. On suppose que T n'est pas trié. Ecrire une fonction récursive ou itérative qui retourne l'élément qui apparaît le plus souvent dans le tableau T ainsi que son nombre d'occurences. Si plusieurs éléments différents répondent au problème, votre algorithme doit en fournir un. Vous ne devez utiliser aucun autre tableau que celui sur lequel vous travaillez.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Fiu,

    As-tu regardé un peu les sujets traités dans le forum ?

    Si oui, tu dois savoir qu'on ne fera pas ton travail à ta place.

    Alors, explique-nous où tu en es, ce qui te bloque, etc., et on pourra t'aider.

  3. #3
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Par défaut
    Citation Envoyé par imipiya Voir le message
    Salut; c'est Imi, je suis en terminale
    Non : "Salut; c'est Imi, je suis en terminale" et en vacances pour deux jours encore ...


    Citation Envoyé par imipiya Voir le message
    et le prof nous a demandé de résoudre ce problème qui est un peu difficile;
    Correction :"et le prof nous a demandé de résoudre ce problème" mais c'est pour lundi, nous sommes vendredi (soir) et je n'ai encore rien fait ... donc si vous pouviez le faire à ma place ça m'arrangerait.

    Ben ... non

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Citation Envoyé par richard
    ..................................
    On ne va pas en faire toute une histoire non plus et en profiter pour se moquer ou juste ecrire pour
    @+

  5. #5
    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
    Soit T un tableau de n entiers. On suppose que T n'est pas trié. Ecrire une fonction récursive ou itérative qui retourne l'élément qui apparaît le plus souvent dans le tableau T ainsi que son nombre d'occurences. Si plusieurs éléments différents répondent au problème, votre algorithme doit en fournir un. Vous ne devez utiliser aucun autre tableau que celui sur lequel vous travaillez.
    je vais te proposer un algorithme :
    *Tu tries d' abord le tableau dans l' ordre que tu veux. Le tableau trié sera un peu comme ça 1,2,2,9,9,9,9,10,10,15,30,30,30).On voit que les meme elemets se suivent (donc facile à compter).
    *En suite tu fais une boucle pour compter chaque element. Du genre :

    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
     
    occurence:=1;
    max:=t[1];
    compteur:=1;
    for i:=2 to n do
     if t[i]=t[i-1] then
        begin
        compteur:=compter+1;
        if compteur>occurence then
          begin
          occurence:=compteur;
          max:=t[i];
          end;
       end
    else
       compteur:=1;
     
    writeln('le max est ',max,' son occurence est  ',occurence');
    ça pourra peut etre d' aider à sortir de ta galère.

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 3
    Par défaut
    Voici mon prog Pascal : il est exécutable mais le résultat n'est pas correct. Je ne sais pas où est le problème
    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
            program occurence_max;
            uses wincrt;
            type tab =array [1..100] of integer;
            var t:tab;
             n:integer;
     
    procedure recursive (t :tab;n:integer);
    var  occurence,max,i,compteur:integer;
    begin
    occurence:=1;
    max:=t[1];
    compteur:=1;
    for i:=2 to n do
     if t[i]=t[i-1] then
        begin
        compteur:=compteur+1;
        if compteur>occurence then
          begin
          occurence:=compteur;
          max:=t[i];
          end;
          end
    else
     compteur:=1;
     
    writeln('le max est ',max,' son occurence est:  ',occurence);
    end;
     
     
    procedure tri_selec (var t:tab;n:integer);
    var i,posm:integer;
     
        procedure permute (var x,y:integer);
        var z :integer;
        begin
        z :=x;
        x:=y;
        y:=z;
        end;
     
       function mini (t:tab;j,n:integer):integer;
       var i,q:integer  ;
       begin
       j:=i+1;
       q:=j;
       for i := j+1 to n do
       if t[i]< t[q] then
       q:=i;q:=mini(t,j,n);
       end; 
    begin
    for i:=1 to n-1 do
    posm:=mini (t,i+1,n);
     if t[posm]< t[i]
     then permute ( t[i],t[posm]);
     end;
     
     
     procedure saisie ( var t:tab;n:integer);
     var i:integer;
     begin
      write ('saisir n:') ; read (n);
      for i := 1 to n do
      begin
      writeln ('t[',i,']:');readln (t[i]);
      end;
       end;
     
     
     
    begin
    saisie (t,n);
    tri_selec (t,n);
    recursive (t,n);
    end.

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function mini (t:tab;j,n:integer):integer;
       var i,q:integer  ;
       begin
       j:=i+1;
       q:=j;
       for i := j+1 to n do
       if t[i]< t[q] then
       q:=i;q:=mini(t,j,n);
       end;
    Je n' ai pas lu tout le code mais je vois dejà des erreurs.
    Quand au debut tu ecris j:=i+1, d' apres toi, i contient quelle valeur ?
    Ensuite à la fin tu mets q:=mini(t,j,n). Je crois tu ne sais pas ce ça fait-la recursivité. Tu ne sortiras jamais vivant de cette boucle à moins qu' un overflow se produit.
    Si tu veux chercher le minimun, tu peux utiliser cet algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mini:=t[1];
    for i:=2 to n do
     if t[i]<mini then
      mini:=t[i];
    writeln('le mini est ',mini);

Discussions similaires

  1. [E-03] Exploiter un tableau croisé dynamique
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 26/02/2009, 11h43
  2. Exploiter un tableau croisé dynamique
    Par onejock dans le forum Excel
    Réponses: 5
    Dernier message: 03/07/2008, 12h15
  3. [Tableaux] exploiter un tableau avec array_splice
    Par Mitaka dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 18h05
  4. Programme de traitement de tableau
    Par feynman dans le forum Fortran
    Réponses: 8
    Dernier message: 24/09/2007, 10h56
  5. Exploiter un tableau de byte
    Par yanis97 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/10/2006, 22h25

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