Besoin d'aide! Tableaux

Fermé
RainbowVic - 18 nov. 2012 à 18:28
 RainbowVic - 20 nov. 2012 à 01:02
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

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
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
20 nov. 2012 à 00:27
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
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