Salut. J'ai tenté de rédiger un programme pour traiter les polynômes.En gros il prend les coefficients en entrées et les classe dans un tableau dont les indices représentent les exposants;de plus il s'arrête aux puissances de 10 cependant en modifiant les constantes et la dimension du tableau déclaré au "type" vous avez une infinité de possibilités. D'où l'utilisation qui m'a semblé un peu fastudieuse.Il permet faire ces opérations(accessibles à travers un menu):
-saisie
-affichage
-addition
-soustraction
-produit
Cependant,il faut noter que les opérations ne sont possibles qu'entre deux facteurs et que l'affichage est croissant quoiqu'avec une boucle "Repeat...Until" vous pouvez rendre l'affichage décroissant.
Exemple de saisie:
Coefficient de degré 0:1
Coefficient de degré 1:-1
Coefficient de degré 2:0
...
coefficient 10:0
Affichage:P(X)=1-X
J'oubliais je l'ai compilé sur Borland Turbo Pascal. Le voici:
program polynome;
uses wincrt;
const n=10;
e=20;
type
vect=array[0..20]of integer;
var
v,q,p:vect;
coef,ch:integer;
ch2:char;
{saisie}
procedure saisie(var u:vect);
var
i:integer;
begin
{---Ici nous entrons les coefficients car l'indice représente l'exposant---}
for i:=0 to n do
begin
write('Coefficient de degré',i,':'); readln(u[i]);
end;
end;
{Affichage}
procedure affichage(r:integer;d:vect); {ici la taille du tableau est paramétrée afin}
var {de pouvoir la manipuler au niveau de l'affichage}
i:integer; {du résultat de la multiplication}
begin
if (d[0]<>0) then write(d[0]); {afficher les coefficients différents de 0}
if (d[1]<>0) then
begin
if (d[1]=1) then write('+x') else
if (d[1]=-1) then write('-x')else
if (d[1]>0) then write('+',d[1],'x')else
if (d[1]<0)then write(d[1],'x');
end;
for i:=2 to r do
begin
if (d[i]<>0) then
begin
if (d[i]=-1) then write('-x',i) else
if (d[i]=1) then write('+x',i) else
if (d[i]>0) then write('+',d[i],'x',i) else
if (d[i]<0) then write(d[i],'x',i);
end;
end;
end;
{Addition}
procedure addition( var a:vect);
var i,n:integer;
e,k:vect;
begin
writeln('Nous créeons ici les deux polynômes qui seront additionnés:');
writeln('Création du premier polynôme:');
saisie(k);
writeln('Création du second polynôme:');
saisie(e);
clrscr;
{---Addition---}
for i:=0 to n do
begin
a[i]:=e[i]+k[i];
end;
{--Affichage du résultat--}
writeln('Addition:E(x)+K(x)');
write('E(x)='); affichage(n,e); writeln;
write('K(x)='); affichage(n,k); writeln;
writeln('RESULTAT:');
if (a[i]=0) then writeln('A(x)=0') else
write('A(x)='); affichage(n,A);
end;
{ soustraction}
procedure soustraction(var s:vect);
var i:integer;
j,g:vect;
begin
writeln('Ici nous allons soustraire le second du premier');
{--Création des deux polynômes nécessaires à l'opération de soustraction--}
writeln('Création du premier polynôme:');
saisie(j);
writeln('Création du second polynôme:');
saisie(g);
clrscr;
{---Soustraction---}
for i:=0 to n do
begin
s[i]:=j[i]-g[i];
end;
{--Affichage du résultat--}
writeln('Soustraction:J(x)-G(x)');
write('J(x)='); affichage(n,j); writeln;
write('G(x)='); affichage(n,g); writeln;
writeln('Résultat:');
write('S(x)='); affichage(n,s);
end;
procedure multiplication(var k:vect);
var i,j,d:integer;
y,t:vect;
begin
writeln('Nous allons créer les deux polynômes à multiplier');
writeln('Création du premier polynôme:');
saisie(y);
writeln('Création du second polynôme:');
saisie(t);
clrscr;
{--Mulitiplication--}
for i:=0 to n do k[i]:=0;
for i:=0 to n do
begin
for j:=0 to n do
k[i+j]:=k[i+j]+y[i]*t[j];
end;
{--Affichage du résultat--}
writeln('Multiplication:Y(x)*T(x)');
write('Y(x)='); affichage(n,y); writeln;
write('T(x)='); affichage(n,t); writeln;
writeln('Résultat:');
write('M(x)='); affichage(e,k); {Grâce au paramétrage de la taille nous avons pu appeler}
end; {une taille différente (20 au lieu de 10 pour la création)
{pour l'affichage du produit}
{--Programme principal--}
Begin
repeat
writeln;
writeln('++++++++++++++++++');
writeln('+ MENU PRINCIPAL +');
writeln('++++++++++++++++++');
writeln('Que voulez vous faire:');
writeln(' 1-Créer un polynôme?');
writeln(' 2-Afficher le polynôme crée?');
writeln(' 3-Additionner deux polynômes?');
writeln(' 4-Soustraire deux polynômes?');
writeln(' 5-Multiplier deux polynômes?');
write(' Donnez votre choix(1,2,3,4,5):'); readln(ch);
case ch of
1:begin
writeln;
writeln('Création polynôme:');
saisie(v);
writeln;
end;
2:begin
writeln;
writeln('Voici le polynôme précédement crée:');
clrscr;
write('P(x)=');
affichage(n,v);
writeln;
end;
3:begin
writeln;
writeln('******************************');
writeln('* Addition de deux polynômes *');
writeln('******************************');
writeln;
addition(q);
writeln;
end;
4:begin
writeln;
writeln('**********************************');
writeln('* Soustraction de deux polynômes *');
writeln('**********************************');
writeln;
soustraction(p);
writeln;
end;
5:begin
writeln;
writeln('************************************');
writeln('* Multiplication de deux polynômes *');
writeln('************************************');
writeln;
multiplication(p);
writeln;
end
else write('CHOIX INCORRECT (Faites le choix en entrant: 1,2,3,4 ou 5) ');
writeln;
writeln;
end;
repeat
write('Voulez vous continuez vos opérations sur le polynôme?(O/N):'); readln(ch2);
until ((upcase(ch2)='O')or (upcase(ch2)='N'))
until (upcase(ch2)='N')
end.