logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [PASCAL] Polynôme
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [PASCAL] Polynôme  (Lu 3169 fois)
b@r@kz

Profil challenge

Classement : 1638/54285

Membre Junior
**
Hors ligne Hors ligne
Messages: 62


Voir le profil
« le: 19 Mars 2008 à 11:30:41 »

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:
Code:
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.
« Dernière édition: 18 Septembre 2008 à 17:30:34 par b@r@kz » Journalisée

Des chercheurs qui cherchent, on en trouve; des chercheurs qui trouvent on en cherche...
Pages: [1]
  Imprimer  
 
Aller à: