Besoin d'aide svp! - Delphi/Pascal - Programmation
Marsh Posté le 19-11-2012 à 02:59:21
Tu bloques ou?
Marsh Posté le 19-11-2012 à 16:40:26
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.
Marsh Posté le 19-11-2012 à 23:17:50
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
Marsh Posté le 20-11-2012 à 01:01:36
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!
Marsh Posté le 20-11-2012 à 05:50:45
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 |
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)
Marsh Posté le 18-11-2012 à 22:26:27
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!