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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| program calculatrice;
uses crt;
const N=100;
type poly = array[0..N] of integer;
type pile = record
elements : array[1..N] of poly;
position : integer;
end;
var i,m:integer;
T:pile;
polyn,carcour,choix,a,b:char;
x,op,p,q:poly;
procedure empiler(var T:pile; n:poly);
begin
T.elements[T.position+1]:=n;
T.position:=T.position+1;
end;
procedure depiler(var T:pile; var res:poly);
begin
T.position:=T.position-1;
res:=T.elements[T.position+1];
end;
function pilevide(T:pile):boolean;
begin
if T.position=0
then pilevide:=true
else pilevide:=false;
end;
procedure sommet(var T:pile; res:poly);
begin
res:=T.elements[T.position];
end;
procedure evaluation(var T:pile);
var x,y,s,m,op:poly;i,j :integer;
begin
while T.position<>1 do
begin
depiler(T,x);
depiler(T,op);
depiler(T,y);
if op[0]=-2
then s[i]:=x[i]+y[j]; empiler(T,m);
if op[0]=-1
then m[i]:=x[i]*y[j]; empiler(T,m);
end;
end;
procedure ad_poly(p,q:poly; var resul: poly);
begin
for i:=1 to N do
resul[i]:=p[i]+q[i];
end;
procedure mult_poly(p, q : poly; var res : poly);
var tmp : poly;
i, k : integer;
begin
for k := 0 to N do begin
for i := 0 to k - 1 do
tmp[i] := 0;
for i := k to N do
tmp[i] := p[i]*q[i-k];
res[i] := res[i] + tmp[i] ;
end;
end;
begin
clrscr;
writeln('Choisissez ce que vous voulez calculer');
writeln('Pour utiliser la calculatrice simple,.........tapez a');
writeln('Pour la recherche de racines de polynmes,....tapez b');
readln(choix);
if choix='a' then
begin
T.position:=0;
write('Entrez une opration de chiffres positifs finis par un =');
writeln;
read(carcour);
while carcour<>'=' do
begin
if carcour in ['0'..'9'] then
m:=ord(carcour)-ord('0');
if carcour='*' then
begin
m:=-1;
op[0]:=m;
end;
if carcour='+' then
begin
m:=-2;
op[0]:=m;
evaluation(T);
end;
empiler(T,op);
read(carcour);
end;
evaluation(T);
if (pilevide(T)=true)
then writeln('La pile est vide')
else writeln('La pile n''''est pas vide');
writeln('Lentier qui se trouve au sommet est:');
end;
if choix='b' then
begin
writeln('Entrez un polynome quelconque');
read(polyn);
writeln('Entrez deux variables a et b tels que P(a)P(b)<0');
read(a,b);
end;
readln;
readln;
end.
x[i]:=sommet(T,x);
for i:=1 to T.position do
write(T.elements[i],' ');
writeln; |
Partager