Besoin d'aide! Tableaux

Bonjour, j'aurais besoin de l'aide d'une âme généreuse pour m'aider à faire un petit travail! Il est vraiment important et je n'arrive pas à le faire.

Voici ses consignes :

program devoir ;

Pour deux listes d ' entiers , liste1 et liste2 , lues en entree , le programme produit une liste
reprenant les elements ne se trouvant pas dans les deux listes .

Le programme lit :
i . deux entiers , lg1 et lg2 , representant la taille des deux listes ( inferieur ou
egaux a la constante LMAX)
i i . ( lg1+lg2 ) nombres entiers

Le programme affiche une liste ordonnee liste Res = liste1 / liste2 contenant les elements
qui se trouvent dans la liste1 , mais pas dans la liste2
Par exemple , si :
lg1 = 9 et lg 2 = 4 ;
liste1 = [ 1 , 2 , 6 , 8 , 5 , 4 , 7 , 3 , 9 ]
liste2 = [ 1 , 3 , 8 , 5 ]
alors ,
listeRes = [ 2 , 4 , 6 , 7 , 9 ]

const
LMAX=30;
var
lg 1 , lg2 : integer ;
liste1 , liste2 : array [ 1 . .LMAX] of integer ;
begin
....................
end .

Aussi, => * la condition lg1, lg2 <= LMAX est toujours vraie
* vous ne devez pas toucher à LMAX
* vous ne devez pas initialiser les valeurs des tableaux et leurs longueurs effectives (lg1 et lg2)
* vous pouvez ajouter autant de variables que vous voulez
* ne laissez pas de read/readln dans votre code (a fortiori, pas de write/writeln non plus)
* les listes peuvent contenir des doublons (dans ce cas, on enlève une fois l'élément par nombre de fois qu'il se retrouve dans l'autre liste. Ex1: si liste1=[1,2,2] et liste2=[2], alors listeRes=[1,2]. Ex2: si liste1=[2,1,2] et liste2=[2,2], alors listeRes=[1].
* les listes liste1 et liste2 ne sont pas forcément triées, mais listeRes doit l'être.
* listeRes ne peut contenir que les éléments de la solution, le reste de la liste est remplie de 0.

Il faudrait donc reprendre les memes noms de variables que dans l'énoncé et si possible trier les tableaux au début.

SVP j'ai vraiment besoin que quelqu'un m'aide, cela serait super sympathique!

3 réponses

  1. program Devoir;
    Var i,temp1,temp2 : integer ;
    Idem : boolean ;
    I :=1 ;
    While i<lmax do
    listeRes[i] :=0 ;
    end;
    i:=1 ;
    Lg1 :=1 ;
    While (lg1<LMAX) do
    Idem :=true ;
    Lg2 :=1 ;
    Temp1 :=liste1[lg1] ;
    While (lg2<LMAX) and (idem=true) do
    Temp2 :=liste2[lg2] ;
    If temp1<>temp2 do
    Idem :=false ;
    end ;

    end.

    Voila ce que j'ai réussi à produire, maintenant c'est i,complet je ne sais pas comment faire pour le tri de List1 etList2 et pour le principe des doublons
    0
    1. Modérateur
      Tu pourrais déjà commencer par faire un copier-coller de ce qui t'es imposé !

      const 
          LMAX=30;
      var
          lg1, lg2 : integer;
          liste1, liste2 : array [1..LMAX] of integer;

      Ensuite, nul part on ne te demande de trier tes listes List1 et List2 !
      Alors relis tes consignes, c'est plus simple que ce que tu essayes de nous faire croire...
      0
      1. RECTIFICATION :

        program DEVOIR ;
        const
        LMAX=30;
        var
        lg1 , lg2 : integer ;
        cpt1, cpt2, cptres : integer ;
        existe: boolean;
        liste1 , liste2 : array [ 1...LMAX] of integer ;
        listeRes : array [1...LMAX] of real;

        begin

        cptres:=0;
        While cptres <lmax do
        begin
        cptres:=cptres+1;
        listeRes[i] :=-1 ;
        end;

        existe:= false;
        cpt1:=0;
        cpt2:=0;
        cptres:=1;

        while (cpt1<lg1) do
        begin
        cpt1 := cpt1+1 ;
        while (cpt2<lg2) do
        begin
        cpt2:=cpt2+1;
        if (liste1[cpt1] =liste2[cpt2]) then
        begin
        existe:=true;
        end;
        cpt2:=cpt2+1
        end;
        if not existe then
        listeRes[cptres]:=liste[cpt1] ;
        cptres:=cptres+1;

        existe :=false ;
        cpt1 :=cpt1+1 ;
        end;

        end.

        - Il ne faut pas s'occuper de l'affichege
        -Ici je n'ai juste pas la methode tri et la methode pour les doublons

        Si vous pouviez m'aider à les rajouter cela m'aiderait vraiment!
        0