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 valeurs qui se répètent dans un tableau


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Compter les valeurs qui se répètent dans un tableau
    Salut à tous

    Etudiant que je suis en 1ere année en mathématiques et informatique, il m'est demandé de trouver un algorithme en PASCAL qui, à partir de deux tableaux (l' un de 200 entiers et l'autre de 50) à une dimension, trouve le nombre d'éléments du 2eme tableau qui se répètent plus de 6 fois dans le 1er et affiche ces nombres-là.
    J'ai alors trouvé ceci et j'espère trouver quelqu'un ici qui pourra m'aider sur les modifications à apporter.

    MERCI D'AVANCE

    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
    program TABIZI;
    uses crt;
    Const a=200 ;
          b= 50 ;
    type tab1 = array[1..a] of integer ;
         tab2 = array[1..b] of integer ;
     
    var  x: tab1; y: tab2 ; i,j : integer;
            nbt: integer    ;
            cont ,c : integer ;
    begin
    randomize;
    FOR  i := 1 to a do
    begin
    x[i]:=7;
    end;
    writeln('FINI POUR LE 1ER TABLEAU')  ;
    FOR  j := 1 to b do
    begin
    readln(y[j]);                      (* * []= + / - < > *)
    end           ;
    writeln('FINI POUR LE 2ND')         ;
    i:=1 ; j:=1; nbt:=0 ; cont:= 0;
    while j<=b do
    begin
    while (i<=a) and (cont <7) do
    begin
    if (y[j]=x[i]) then
    begin cont:=cont+1 ;                      (* I= 50 et j= 5 *)
    end;
    i:=i+1 ;
    end ;
    if cont > 6 then
    begin
    nbt:=nbt+1  ;
    end ;
    j:=j+1 ;
    end;
    WRITELN(' Les valeurs repetées sont ',nbt)    ;
    READKEY;
    end.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 085
    Points : 15 490
    Points
    15 490
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Le premier problème à régler, c'est de remplir les tableaux de valeurs aléatoires, ce qui n'est pas fait dans le code présenté (quoique la procédure Randomize soit appelée). Vous n'allez pas saisir 50 valeurs à la main à chaque essai du programme !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      x[i] := Random(10); // pour des nombres compris entre 0 et 9
      y[j] := Random(10);
    D'ailleurs vous pourriez réutiliser i au lieu de déclarer une deuxième variable.

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    salut

    ce qui me gene c'est que tu ne donne pas d’échelle pour tes entier
    si comme le pense roland toutes les case sont remplie entre 0 est 9 rien de plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Const a=200 ;
          b= 50 ;
    type tab1 = array[1..a] of integer ;
         tab2 = array[1..b] of integer ;
    on utilise la manip de roland pour initialiser tout tes tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i:= low(tab1) to Hight(tab1) do
       tab1[i] := Random(10); // pour des nombres compris entre 0 et 9
     
    for i:= low(tab2) to Hight(tab2) do
      tab2[i] := Random(10);
    dans ce cas il te suffit d'un tableau supplémentaire de 10 case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabResult : array[0..9] of byte; // de toutes les façon le maxi par case sera 200
    on initialise le tableau a zero

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i:low(TabResult)   to hight(TabResult) do
       TabResult := 0;
    on remplit notre tableau intermédiaire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     For i:low(Tab1)   to hight(Tab1) do
       TabResult[Tab200[i]]:=  TabResult[i]+1; 
     
     For i:low(Tab2)   to hight(Tab2) do
      if TabResult[Tab2[i]] > 6 Then 
        je recupere ma valeur Tab2[i]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : etudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci mais je ne comprends pas très bien le dernier code à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i:low(Tab1)   to hight(Tab1) do
       TabResult[tab2[i]]:=  TabResult[i]+1;
    For i:low(Tab2)   to hight(Tab2) do
      if TabResult[Tab2[i]] > 6  then
    Peux-tu apporter des explication stp ???

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 443
    Points : 5 863
    Points
    5 863
    Par défaut
    Citation Envoyé par ahossanmarc Voir le message
    Merci mais je ne comprends pas très bien le dernier code à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i:low(Tab1)   to hight(Tab1) do
       TabResult[tab2[i]]:=  TabResult[i]+1;
    For i:low(Tab2)   to hight(Tab2) do
      if TabResult[Tab2[i]] > 6  then
    Peux-tu apporter des explication stp ???
    Oups quel que coquille a vouloir aller trop vite

    il fallait lire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For i:=low(Tab1)   to high(Tab1) do
       TabResult[Tab1[i]]:=  TabResult[Tab1[i]]+1;
    ici je comptabilise le nombre d'element identique pour un même rang
    imaginons que dans tab1 tu ai 7 valeur 5
    dans ma tabResult a l'indice 5 j'aurai le nombre 7
    tabResult[5] = 7
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i:=low(Tab2)   to high(Tab2) do
      if TabResult[Tab2[i]] > 6  then
       je récupère ma valeur Tab2[i]
    ici je parcours ma tab2 et si la valeur contenu dans tabresult a l'indice tab2 indice i
    est supérieur a 6 alors je fais ce que je doit faire
    reprenons l'exemple si dessus on sais que si dans tab2 tu as une valeur 5
    elle s'affichera car on as dans notre tabresult au rang 5 la valeur 7

    j’espère avoir été plus clair et encore désolé pour les coquille

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 955
    Points
    3 955
    Par défaut
    Salut

    Il va falloir créer un forum : "SVP j'ai une série d'exercices à faire".

    Cela me surprend toujours comme les forums sont exploités à cette fin. Quand j'étais étudiant, nous n'avions pas ce moyen et pourtant nous nous efforcions de faire les exercices, et le plus souvent on y arrivait, autre époque sans doute.

    Je n'ai rien contre l'entraide, ma participation au forum le montre, mais quand même...

    Cdlt

Discussions similaires

  1. Vérif (correction) d'algorithmes - SVP
    Par Duch9 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 19/02/2011, 12h34
  2. Traduction d'algorithme en Pascal : calculer x^k
    Par Zac EFRON dans le forum Pascal
    Réponses: 6
    Dernier message: 08/12/2008, 00h35
  3. Réponses: 2
    Dernier message: 30/12/2007, 12h52
  4. Demande de corrections d'exercices Turbo Pascal
    Par Helpine dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 16/01/2005, 10h38

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