Help Procédure

emidelphi Messages postés 6 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 23 octobre 2005 - 7 oct. 2005 à 03:40
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 24 oct. 2005 à 21:15
J’ai besoin du code de cette procédure :


Proc([p ::P])


{


Instructions


Test si P est vide


Proc(P)


}


Sachant que j’ai un tableau a 2 dimensions de la forme :


T1 : A,B,C,D


T2 : B,C,F


T3 : E,F,D,A


………….


Avec le p est le premier élément de Ti et P la listes des éléments qui reste.
par exemple


Pour T1 p=A et P = {B,C,D}


En fait mon problème c’est comment découper les éléments de chaque Ti en : premier élément : p et le reste des éléments : P (privé de p).


Je suis débutant en delphi et j’ai besoin de ce code d’urgence.


Merci d’avance.


http://www.developpez.net/forums/viewtopic.php?p=2277517#2277517

3 réponses

padsou Messages postés 121 Date d'inscription jeudi 24 janvier 2002 Statut Membre Dernière intervention 13 avril 2010
7 oct. 2005 à 10:32
bon je suis pas sûr d'avoir tout compris mais bon :

for i := 1 to 4 do
begin
p := T[i];
for j := 1 to 4 do
begin
if T[j] <> p then
P := P + ',' + T[j]
end;
end;
0
emidelphi Messages postés 6 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 23 octobre 2005
7 oct. 2005 à 19:27
Bonjour,

Merci d'avoir repondu .

je pense que j'ai mal formuler ma question :(


le code permet de faire un découpage : pour le [p::P] et puis sur P lui même (récursivité) Proc([p::P] ...... puis Proc[P] le P sera de la forme [p1::P1] est ainsi de suite jusqu'a ce que le P sera vide .

Merci
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 oct. 2005 à 21:15
hors contexte il est dificile de bien comprendre ce que tu recherche...



mais en gros tu voudrais une fonction qui te donne :



p (premier element du tableau) = type de donnée

P (reste du tableau) = array of type de donnée



deja evite les declarations d'identificateur comme p et P ...

delphi ne gere pas la case donc p = P



donc beaucoup de probleme a soulever, admettons que tu travail sur des tableau d'entier (ce serat plus facile)



type

TDinIntArray = array of Integer;



var

tab1,tab2,tab3 : TDinIntArray;



voila deja nos tableaux. on vas passer le remplissage de ces derniers qui ressemble a ça :



SetLength(tab1,5);

Tab1[0] := 10;

Tab1[1] := 20;

etc...



donc pour extraire le premier element du tableau et donner le reste sous forme de tableau on aurat en gros :



un nouveau type :



type

TOutData = record

Premier : integer;

Reste : TDinIntArray;

end;



et une fonction qui vas bien :



function GetFirstAndRest (tableau : TDinIntArray) : TOutData;

var x : integer;

begin

result.Premier := tableau[0];

SetLength(result.reste, length(tableau)-1);

for x := 0 to length(tableau)-1 do

result.Reste := tableau[x+1];

end;



ce qui nous donne en pratique :



type

TForm1 = class(TForm)

ListBox1: TListBox;

Label1: TLabel;

Edit1: TEdit;

ListBox2: TListBox;

Label2: TLabel;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

private

{ Déclarations privées }

public

{ Déclarations publiques }

end;



TDinIntArray = array of integer;



TOutData = record

premier : integer;

reste : TDinIntArray;

end;





var

Form1 : TForm1;

tableau1 : TDinIntArray;



implementation



{$R *.dfm}



// notre fonction qui vas bien.

function GetFirstAndRest(var tableau : TDinIntArray) : TOutData;

var x : integer;

begin

result.premier := tableau[0];

SetLength(result.reste, length(tableau)-1);

for x := 0 to length(result.reste)-1 do

result.reste[x] := tableau[x+1];

end;



// une autre qui peut etre pratique.

function GetElement(var tableau : TDinIntArray; position : integer) : integer;

begin

result := tableau[position];

end;



// on utilise FormCreate comme un barbare.

procedure TForm1.FormCreate(Sender: TObject);

var x : integer;

tod : TOutData; // le meme type que le retour de notre fonction

begin

// on definie la taille du premier tableau

SetLength(tableau1,10);



// on le remplis

for x := 0 to length(tableau1)-1 do

tableau1[x] := x*2; // avec des valeurs differente



// on affiche les valeurs de tableau1

for x := 0 to length(tableau1)-1 do

listbox1.Items.Append(inttostr(GetElement(tableau1,x)));



// on applique le traitement

Tod := GetFirstAndRest(tableau1);



// on affiche le premier element

edit1.Text := inttostr(tod.premier);



// on affiche le reste

for x := 0 to length(tod.reste)-1 do

listbox2.Items.Append(inttostr(GetElement(tod.reste,x)));

end;



end.





voilaje sais pas si c'est ce que tu voulais mais ça peu te donner une approche du probleme.
0
Rejoignez-nous