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 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    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.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    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 419
    Points : 5 818
    Points
    5 818
    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]
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  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 419
    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 419
    Points : 5 818
    Points
    5 818
    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
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  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 556
    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 556
    Points : 3 933
    Points
    3 933
    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

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

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