1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
procedure creation(var p:pointeur;var position:integer, formule:string);
begin(*debut procedure*)
(*debut while*)
read(formule[position]);
case formule[position] of
'(':begin
new(p^.filsdroit);
position:=position+1;
creation(p^.filsdroit,position,formule);
end;
's':begin(*pourlecasoul'operateurestunsin*)
p^.ele:='s';
new(p^.filsdroit);
position:=position+3;
creation(p^.filsdroit,position,formule);
p^.filsgauche:=nil;
end;
'c':begin(*pourlecasoul'operateurestuncos*)
p^.ele:='c';
new(p^.filsdroit);
creation(p^.filsdroit,position,formule);
position:=position+3;
p^.filsgauche:=nil;
end;
'l':begin(*pour le cas oul'operateur est un log*)
p^.ele:='l';
new(p^.filsdroit);
position:=position+3;
creation(p^.filsdroit,position,formule);
p^.filsgauche:=nil;
end;
'e':begin(*pourle cas ou l'operateur est une exp*)
p^.ele:='e';
new(p^.filsdroit);
position:=position+3;
creation(p^.filsdroit,position,formule);
p^.filsgauche:=nil;
end;
't':begin(*pour le cas ou l'operateur est une tg*)
p^.ele:='t';
new(p^.filsdroit);
position:=position+2;
creation(p^.filsdroit,position,formule);
p^.filsgauche:=nil;
end;
'0','1','2','3','4','5','6','7','8','9':begin
p^.ele:=formule[position];
p^.filsdroit:=nil;
p^.filsgauche:=nil;
position:=position+1;
end;
'+','-','*','/':begin
p^.ele:=formule[position];
new(p^.filsgauche);
position:=position+1;
creation(p^.filsgauche,position,formule);
end;
')':if position+1<>length(formule) then position:=position+1;
end;(*fin case*)
end;(*finprocedure*) |
Partager