Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2217 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Besoin d'aide svp!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide svp!

n°2164539
RainbowVic
Posté le 18-11-2012 à 22:26:27  profilanswer
 

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!

mood
Publicité
Posté le 18-11-2012 à 22:26:27  profilanswer
 

n°2164545
lasnoufle
La seule et unique!
Posté le 19-11-2012 à 02:59:21  profilanswer
 

Tu bloques ou?


---------------
C'était vraiment très intéressant.
n°2164584
RainbowVic
Posté le 19-11-2012 à 11:23:15  profilanswer
 

Partout :( au tri du tableau par exemple

n°2164618
lasnoufle
La seule et unique!
Posté le 19-11-2012 à 16:40:26  profilanswer
 

Je pense que personne va t'aider si tu y mets pas du tien... T'as forcement un cours qui va avec l'exercice. Bloquer "partout" c'est pas possible, ca veut juste dire que tu t'en bats les couilles et que tu veux qu'on fasse le boulot a ta place (ce qui est louable si t'en as rien a faire de l'info, mais dans ce case j'me demande pourquoi tu etudies l'info).
Sors-toi les doigts du cul, montres ce que tu as essaye de faire et la ou tu y arrives pas, la p'tetre qu'on pourra t'expliquer.
 
Le pire c'est que si tu t'en tapes de comprendre et que tu veux juste un truc tout fait, tiens regarde en deux secondes sous google "tri tableau delphi" t'as du tout cuit dans le bec:
http://www.interpc.fr/mapage/admor [...] iBulle.htm
http://www.interpc.fr/mapage/admor [...] Rapide.htm
 
Enfin bref.


---------------
C'était vraiment très intéressant.
n°2164670
RainbowVic
Posté le 19-11-2012 à 23:17:50  profilanswer
 

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 :(

n°2164678
RainbowVic
Posté le 20-11-2012 à 01:01:36  profilanswer
 

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!

n°2164685
lasnoufle
La seule et unique!
Posté le 20-11-2012 à 05:50:45  profilanswer
 

Ben nickel, tu y es presque.

 

Pour les doublons: plutot que d'utiliser un booleen pour ta variable existe, utilises un entier qui represente l'index de l'element qui existe dans le tableau 2 (mettons qu'on l'appelle indexTrouve).
Tu l'initialises a -1 avant de chercher, et quand tu trouves (donc a la place de ta ligne "existe:=true;" ), tu lui assignes la valeur de cpt2.
Quand tu sors de ta boucle, ton test " if not existe then " devient "if indexTrouve = -1".
Tu y rajoutes un else, dans lequel tu connais l'index de l'element que tu as trouve et donc tu vas pouvoir t'occuper de lui: par exemple, le retirer du tableau 2 pour pas qu'il soit matche une nouvelle fois plus tard.

if indexTrouve = -1 then begin
// Element non trouve dans la liste 2: copie l'element dans la liste resultat, code que tu as deja
end else begin
// Element trouve, et tu connais son index dans la liste 2: debarasses t'en. Par exemple:
// si tes elements ne peuvent etre que des entiers positif, assignes -1 a l'element qui se trouve a indexTrouve
// si tes elements peuvent aussi etre des entiers negatifs, le coup du -1 ne marche plus; permutes le dernier element du tableau 2 avec l'element identifie, et reduis lg2 de 1
// (en gros, tu mets ton element a la fin du tableau et reduis la taille du tableau de 1, donc tu t'en "debarasses"
end;

 

Pour le tri, j'ai mis des liens deja; si ils sont trop compliques pour toi, essaies d'utiliser un algo plus simple, par exemple:
1 - tu parcours ton tableau dans l'ordre
2 - a chaque pas, tu compares l'element ou tu es avec l'element suivant
3 - des que tu trouves un cas ou l'element suivant est plus petit de l'element ou tu es, tu les permutes, et tu recommences du debut.
Quand tu auras reussi a parcourir tout le tableau sans avoir de cas ou tu dois permuter, ton tableau sera trie par ordre croissant.

 

Essaies deja de faire ca, t'auras fini ton exo - apres on peut parler optimisation si tu veux, quelques pistes deja:
- le tri que je donne au-dessus est simple a programmer mais c'est probablement un des pires niveau performance (ca ne fera pas de difference visible pour tes petits tableaux mais bon c'est souvent mal vu de l'utiliser, sauf quand tu apprends evidemment),
- dans ton algo, une fois que tu as trouve que l'element existe dans la liste 2, ca ne sert a rien de continuer a parcourir le reste de la liste 2 jusqu'au bout,
- et une piste qui peut te chambouler tout ton algo: si tu tries tes deux tableaux au debut, il y a une facon beaucoup plus simple de les comparer (le fait de savoir qu'ils sont tries te donne un gros avantage)


Message édité par lasnoufle le 20-11-2012 à 05:54:22

---------------
C'était vraiment très intéressant.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Besoin d'aide svp!

 

Sujets relatifs
Besoin d'aide pour quelques exercicesDébutant: besoin d'aide Cmake et VS2012
besoin d'aide kit graph. espace texte impossibleBesoin d'aide sur Sharepoint Designer 2007
Besoin d'aide jointure[DB2] Besoin d'aide pour un MERGE
besoin d'aide-language C svpBesoin d'aide svp
Java - Besoin d'aide pour les JPanel[Débutant HTML/CSS]Besoin d'aide pour débug et compréhension code
Plus de sujets relatifs à : Besoin d'aide svp!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR