Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.52 KB | None | 0 0
  1. PROGRAM addpolinom;
  2. type polinom  = record
  3.                       grad:integer;
  4.                       coef:array[0..10] of integer;
  5.                       end;
  6.  
  7.  
  8. type monom  = record
  9.                     c,g:integer;
  10.                     end;
  11.  
  12.  
  13. type vector = array[1..100] of integer;
  14.  
  15.  
  16. type vpolinom= record
  17.                      c:byte;
  18.                      p : array [ 1 .. 10] of polinom;
  19.                      rez : polinom;
  20.                      end;
  21.  
  22.  
  23. procedure init(var p:polinom);
  24.           var i:integer;
  25.           begin
  26.                p.grad:=0;
  27.                for i:=0 to 10 do
  28.                    p.coef[i]:=0;
  29.           end;
  30.  
  31. function  citeste_coef(var p:polinom):boolean;
  32.            var i:integer;
  33.            var r:boolean;
  34.            begin
  35.               r:=true;
  36.               init(p);
  37.               writeln('Introduceti gradul polinomului: ');
  38.               readln(p.grad);
  39.               if(p.grad < 0 ) then
  40.                        begin
  41.                         r:=false;
  42.                        end
  43.               else
  44.                   for i:=0 to p.grad  do
  45.                       readln(p.coef[i]);
  46.               citeste_coef:=r;
  47.            end;
  48.  
  49. procedure citire_monom(var p:polinom);
  50.           var c,g : integer;
  51.           begin
  52.                readln(c,g);
  53.                init(p);
  54.                while(g<>-1) do
  55.                             begin
  56.                                  p.coef[g]:=p.coef[g]+c;
  57.                                  if(g>p.grad) then
  58.                                               p.grad:=g;
  59.                                  while p.coef[p.grad]=0 do
  60.                                        p.grad:=p.grad-1;
  61.                                  readln(c,g);
  62.                             end;
  63.  
  64.           end;
  65. function citire_pol(var p:polinom):boolean;
  66.           var o:integer;
  67.           var r:boolean;
  68.           begin
  69.                r:=true;
  70.                WriteLn('1 pentru polinom');
  71.                WriteLn('2 pentru monoame');
  72.                WriteLn('introduceti valoarea:');
  73.                read(o);
  74.                if(o = 1) then
  75.                     begin
  76.                          r:=citeste_coef(p);
  77.                     end
  78.                else
  79.                         citire_monom(p);
  80.               citire_pol:=r;
  81.           end;
  82.  
  83.  
  84. procedure citire(var vp:vpolinom; var a:integer);
  85.           var o:boolean;
  86.           var i:integer;
  87.           begin
  88.           o:=true;
  89.           i:=0;
  90.           WriteLn('Introduceti gradul pentru verificarea valorii');
  91.           read(a);
  92.           while o = true do
  93.                 begin
  94.                  i:=i+1;
  95.                  o:=citire_pol(vp.p[i]);
  96.                 end;
  97.           vp.c:=i-1;
  98.           end;
  99.  
  100. procedure add_monom(p:polinom; m:monom; var s:polinom);
  101.           begin
  102.                s:=p;
  103.                s.coef[m.g]:=s.coef[m.g]+m.c;
  104.                if(m.g>p.grad) then
  105.                               p.grad:=m.g;
  106.  
  107.                while (p.coef[p.grad]=0) and (p.grad>=0) do
  108.                      p.grad:=p.grad-1;
  109.           end;
  110.  
  111. procedure adauga_pol(p1:polinom; p2:polinom; var s:polinom);
  112.           var i: integer;
  113.           var m: monom;
  114.           begin
  115.                s:=p1;
  116.                for i:=0 to p2.grad  do
  117.                         begin
  118.                              m.c:=p2.coef[i];
  119.                              m.g:=i;
  120.                              add_monom(s,m,s);
  121.                         end;
  122.           end;
  123. procedure add_polinoame(var vp : vpolinom);
  124.           var i:integer;
  125.           begin
  126.           i:=1;
  127.           adauga_pol(vp.p[1], vp.p[2], vp.rez);
  128.           for i:=3 to vp.c do
  129.               adauga_pol(vp.p[i],vp.rez, vp.rez);
  130.           end;
  131.  
  132. procedure calc_max(vp:vpolinom; a:integer; var r:integer);
  133.           var max, i:integer;
  134.           var ok: boolean;
  135.           begin
  136.                ok:=true;
  137.                i:=1;
  138.                while (ok=true) and (i<=vp.c) do
  139.                      begin
  140.                           if(vp.p[i].grad>=a) then
  141.                                               begin
  142.                                                max:=vp.p[i].coef[a];
  143.                                                ok:=false;
  144.                                               end
  145.                           else
  146.                               i:=i+1;
  147.  
  148.  
  149.  
  150.                      end;
  151.                i:=i+1;
  152.                while(i<=vp.c) do begin
  153.                              if(vp.p[i].grad>=a)
  154.                                                 then
  155.                                                 begin
  156.                                                      if(vp.p[i].coef[a] > max) then
  157.                                                      max:=vp.p[i].coef[a];
  158.                                                 end;
  159.                              i:=i+1;
  160.                end;
  161.                r:=max;
  162.  
  163.           end;
  164.  
  165. procedure tiparire (p:polinom; max:integer; a:integer);
  166.           var i:integer;
  167.           begin
  168.           writeln('Polinomul rezultat este:');
  169.           write(p.coef[p.grad],'x^',p.grad);
  170.           for i:=p.grad-1 downto 0 do
  171.               begin
  172.               if p.coef[i]<>0 then
  173.                  if(p.coef[i]>0) then begin write('+',p.coef[i],'x^',i); end
  174.                  else write(p.coef[i],'x^',i);
  175.  
  176.             end;
  177.           writeln('');
  178.           writeln('Cea mai mare valoare pe pozitia ' , a , ' este ' , max);
  179.           end;
  180. var vp:vpolinom;
  181. var a:integer;
  182. var r:integer;
  183. begin
  184. citire(vp,a);
  185. add_polinoame(vp);
  186. calc_max(vp,a,r);
  187. tiparire(vp.rez, r,a);
  188. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement