Guest User

Untitled

a guest
Feb 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 4.46 KB | None | 0 0
  1.  
  2.  
  3. program tp;
  4. uses crt;
  5. type liste=^elt;
  6.      elt=record
  7.            coff:real;
  8.            exp:integer;
  9.            suiv:liste;
  10.          end;
  11. var tete1,tete2:liste;
  12.     n,x,m:integer;
  13.     r:real;
  14.     choix:string[4];
  15.  
  16. procedure creerPolynome(var tete:liste; n:integer);
  17.   var p,q:liste;
  18.       i,x:integer;
  19. begin
  20.   q:=tete;
  21.   for i:=1 to n do
  22.   begin
  23.     new(p);
  24.     writeln('expo');
  25.     readln(p^.exp);
  26.     write('Entrer le coefficiant:');
  27.     readln(p^.coff);
  28.     p^.suiv:=nil;
  29.     if (tete=nil) then
  30.     begin
  31.       tete:=p;
  32.       q:=p;
  33.     end
  34.     else
  35.     begin
  36.       q^.suiv:=p;
  37.       q:=p;
  38.     end;
  39.   end;
  40. end;
  41.  
  42. function taillePolynome(tete:liste):integer;
  43.   var cpt:integer;
  44. begin
  45.   cpt:=0;
  46.   while (tete^.suiv<>nil) do
  47.   begin
  48.     cpt:=cpt+1;
  49.     tete:=tete^.suiv;
  50.   end;
  51.   taillePolynome:=cpt+1;
  52. end;
  53.  
  54.  
  55. procedure afficherPolynome(tete:liste);
  56.  
  57. begin
  58.  
  59.   write('P(x)= ');
  60.   while(tete<>nil) do
  61.   begin
  62.     if (tete^.coff <>0) then
  63.       begin
  64.         if (tete^.exp<>0) and (tete^.exp<>1) then write(tete^.coff:3:3, 'x^', tete^.exp,' + ')
  65.         else if (tete^.exp=1) then write(tete^.coff:3:3, 'x + ')
  66.         else write(tete^.coff:3:3);
  67.       end;
  68.     tete:=tete^.suiv;
  69.   end;
  70.   writeln;
  71. end;
  72.  
  73. function puiss(x:integer; tete:liste):integer;
  74.   var p,i,a:integer;
  75. begin
  76.   a:=tete^.exp;
  77.   p:=1;
  78.   for i:=1 to a do
  79.     p:=p*x;
  80.     puiss:=p;
  81. end;
  82.  
  83. function calculerImage(tete:liste; x:integer):real;
  84.   var i,taille:integer; resultat:real;
  85. begin
  86.   resultat:=0;
  87.   taille:=n;
  88.   for i:=1 to taille do
  89.   begin
  90.     resultat := resultat + tete^.coff*puiss(x,tete);
  91.     tete:=tete^.suiv;
  92.     n:= n-1;
  93.   end;
  94.   calculerImage:=resultat;
  95. end;
  96.  
  97. function addition(tete1:liste; tete2:liste):liste;
  98.   var p,q,a,s,t,tete:liste;
  99.       tr:boolean;
  100. begin
  101.   p:=tete1;
  102.   q:=tete2;
  103.   tete:=nil;
  104.   t:=tete;
  105.   s:=tete;
  106.   tr:=false;
  107.   while(q^.suiv<>nil) do
  108.     begin
  109.       if (p^.exp=q^.exp) then begin
  110.                                 new(a);
  111.                                 a^.exp:=p^.exp;
  112.                                 a^.coff:=p^.coff+q^.coff;
  113.                                 if (tete=nil) then tete:=a
  114.                                 else s^.suiv:=tete;
  115.                                 s:=a;      
  116.                                 tr:=true;
  117.                               end
  118.       else begin
  119.              new(a);
  120.              a^.exp:=q^.exp;
  121.              a^.coff:=q^.coff;
  122.              if (tete=nil) then tete:=a
  123.              else s^.suiv:=tete;
  124.              s:=a;
  125.                          
  126.            end;                              
  127.       q:=q^.suiv;
  128.     end;
  129.    
  130.     if (tr=false) then begin
  131.                           new(a);
  132.                           a^.exp:=p^.exp;
  133.                           a^.coff:=p^.coff;
  134.                           s^.suiv:=a;
  135.                           s:=a;
  136.                          
  137.                         end;                         
  138.   p:=p^.suiv;
  139.   tr:=false;
  140.   while (p<>nil) do
  141.  
  142.   begin
  143.     while(t<>nil) do
  144.     begin
  145.      
  146.       if (p^.exp=t^.exp) then begin
  147.                                 new(a);
  148.                                 a^.exp:=p^.exp;
  149.                                 a^.coff:=p^.coff+t^.coff;
  150.                                 if (tete=nil) then tete:=a
  151.                                 else s^.suiv:=tete;
  152.                                 s:=a;
  153.                                 tr:=true;
  154.                               end;       
  155.       t:=t^.suiv;
  156.     end;
  157.     if (tr=false) then begin
  158.                          new(a);
  159.                          a^.exp:=p^.exp;
  160.                          a^.coff:=p^.coff;
  161.                          s^.suiv:=a;
  162.                          s:=a;
  163.                        
  164.                        end;    
  165.     p:=p^.suiv;
  166.   end; 
  167.   addition:=tete;
  168. end;  
  169.  
  170. function multip(tete1:liste;tete2:liste):liste;
  171.   var p,q,a,s,tete:liste;
  172. begin
  173.   p:=tete1;
  174.   q:=tete2;
  175.   tete:=nil;
  176.   s:=tete;
  177.   while (p<>nil) do
  178.   begin
  179.     while (q<>nil) do
  180.     begin
  181.       new(a);
  182.       a^.coff:=p^.coff*q^.coff;
  183.       a^.exp:=p^.exp+q^.exp;
  184.       if (tete=nil) then begin
  185.                            tete:=a;
  186.                            s:=a;                               
  187.                          end  
  188.       else begin
  189.              s^.suiv:=a;
  190.              s:=a;
  191.            end;                  
  192.       q:=q^.suiv;
  193.     end;
  194.     q:=tete2;  
  195.     p:=p^.suiv;
  196.   end; 
  197.  
  198.   multip:=tete;  
  199. end;
  200.  
  201. begin
  202.   clrscr;
  203.   writeln('entrer le degre de Polynome1');
  204.   readln(n);
  205.   creerPolynome(tete1,n);
  206.   afficherPolynome(tete1);
  207.   writeln('entrer la valeur');
  208.   writeln('entrer le degre de Polynome2');
  209.   readln(m);
  210.   creerPolynome(tete2,m);
  211.   afficherPolynome(tete2);
  212.   write('la somme est');
  213.   addition(tete1,tete2);
  214.   afficherPolynome(addition(tete1,tete2));
  215.  
  216.   readln;
  217. end.
Add Comment
Please, Sign In to add comment