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 :

Manipulation de tableaux


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Manipulation de tableaux
    On a deux tableau t1 et t2 contenant chacun n entier (2<n<100). on appelle intersection de t1 et t2 l'ensemble des elements commun à ces deux tableau.

    On se propose d'ecrire un programme qui range les éléments de l'intersection de t1 et t2 dans un tableau t3 puis afficher les trois tableau!

    Erreur au niveau (21:17) l'appel de la fonction trouve : identificateur inconnu et le problème que je ne trouve pas cet identificateur

    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
    75
    76
    77
    program intersection;
    uses wincrt;
    type
     tab=array[1..99] of integer;
    var
     t1,t2,t3:tab;
     n,m:integer;
    procedure saisie(var t1:tab;var t2:tab;var n:integer);
      var
         i:integer;
      begin
        repeat
         write('entrez le nombre des éléments du tableau: ');
         readln(n);
        until (n in [2..99]);
        for i := 1 to n do
           begin
             repeat
              write('entrez l''élément n° ',i,' : ');
              readln(t1[i]);
             until (trouve(t1,t1[i])=false;
           end;
        for i := 1 to n do
           begin
             repeat
              write('entrez l''élément n° ',i,' : ');
              readln(t2[i])
             until (trouve(t[i],t2)=false;
           end;
      end;
     
    procedure affiche(t1:tab,t2:tab,t3:tab,n:integer,m:integer);
      var
         i:integer;
       begin         
         for i := 1 to n do
           write('le premier tableau: ',t1[i]);
         for i := 1 to n do
           write('le deuxieme tableau: ',t2[i]);
         for i :=1 to m do
           write('l''intersection des deux tableau: 't3[i]);
        end;
     
    procedure inter(t1,t2,var t3:tab;var m:integer);
       var
         i:intger;
       begin
        m:=0;
        for i:=1 to n do
         begin
          if(exist(t1[i],t2)=true)then
            begin
              t3[i]:=t1[i]
              m:=m+1;
            end;
       end;
     
    function trouve(g:tab;z:integer):boolean;
     var
      i:integer;
      vr:boolean;
     begin
      i:=0;
       repeat
         i:=i+1;
         vr:= false;
         if upcase(t[i])=upcase(c) then
           vr:=  true ;
        until (vr=true) or (i=n);
        exist:=vr;
     end;
     
    begin
      saisie(t1,t2,n);
      inter(t1,t2,t3,m);
      affichage(t1,t2,t3,n,m)  ;
    end.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    BONJOUR.

    Pour rappel des règles: on ne fait pas les devoirs des autres.

    Mais bon, dons ce cas-ci, c'est juste que tu appelles la fonction "affichage" alors que tu l'as nommé "affiche" plus haut

    Il faudra aussi penser à écrire la fonction "exist".
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci
    mais j'ai une petite remarque : je suis en train de réviser pour mon examen de la fin de l'année et j'ai déja fais trois exercices correctement mais celui ne marche pas !!!
    merci pour vos conseil je vais réessayer avec ce programme !!

  4. #4
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par amine1.5 Voir le message
    Erreur au niveau (21:17) l'appel de la fonction trouve : identificateur inconnu et le problème que je ne trouve pas cet identificateur
    salut.
    j'ai pas vu tout le code, mais ton erreur est du au fait que tu as fait un appel à la fonction trouve dans la procédure saisie sans donner la définition de la fonction trouve ( la compilation est descendante et l'ordre est important ici).
    donc tout simplement tu dois placer la définition de ta fonction trouve au dessus de la procédure saisie.

  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
    Points : 2 501
    Points
    2 501
    Par défaut
    Comme l'a dit slim_java, en pascal, il faut toujours déclarer une variable avant de l'utiliser.

    En plus de ca, il y a quelques erreurs au niveau de l'entete de tes fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(t1:tab,t2:tab,t3:tab,n:integer,m:integer);
    devrait etre,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(t1:tab; t2:tab; t3:tab; n, m:integer);
    aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure inter(t1, t2 : tab; var t3:tab; var m:integer);

  6. #6
    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
    Dia,
    Citation Envoyé par darrylsite Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(t1:tab; t2:tab; t3:tab; n, m:integer);
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(t1,t2,t3:tab; n, m:integer);
    Pourquoi utiliser cette possibilité pour les Integer et pas pour Tab ?

    Et mieux encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(const t1,t2,t3:tab; n, m:integer);
    Ce qui évite la copie complète des 3 tableaux sur la pile.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par droggo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    procedure affiche(const t1,t2,t3:tab; n, m:integer);
    Ce qui évite la copie complète des 3 tableaux sur la pile.
    optimisation importante
    merci

  8. #8
    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
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par slim_java Voir le message
    optimisation importante
    merci
    En effet.
    Et c'est mieux expliqué dans la FAQ.

  9. #9
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    quel est la différence si on fait un passage par adresse ?

  10. #10
    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
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par slim_java
    quel est la différence si on fait un passage par adresse ?
    La réponse est dans la FAQ.

  11. #11
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    soi on résume la situation on va dire que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    
    if (paramètre transmis par adresse )  then 
      adresse déposée sur la pile + modification
    else if(paramètre transmis comme constante )then  
       adresse déposée sur la pile + modification impossible ( voir non autorisé );

Discussions similaires

  1. Manipulation des tableaux
    Par driss80 dans le forum Fortran
    Réponses: 4
    Dernier message: 18/01/2008, 08h51
  2. manipulation des tableaux
    Par amine556 dans le forum Informix
    Réponses: 4
    Dernier message: 26/11/2007, 15h20
  3. Problème de manipulation de tableaux
    Par proff dans le forum Pascal
    Réponses: 8
    Dernier message: 01/04/2007, 10h07
  4. Manipulation de tableaux de tableaux
    Par vargasvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2006, 13h54
  5. [Tableaux] Manipulation de tableaux
    Par orus8 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 15h10

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