Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM addpolinom;
- type polinom = record
- grad:integer;
- coef:array[0..10] of integer;
- end;
- type monom = record
- c,g:integer;
- end;
- type vector = array[1..100] of integer;
- type vpolinom= record
- c:byte;
- p : array [ 1 .. 10] of polinom;
- rez : polinom;
- end;
- procedure init(var p:polinom);
- var i:integer;
- begin
- p.grad:=0;
- for i:=0 to 10 do
- p.coef[i]:=0;
- end;
- function citeste_coef(var p:polinom):boolean;
- var i:integer;
- var r:boolean;
- begin
- r:=true;
- init(p);
- writeln('Introduceti gradul polinomului: ');
- readln(p.grad);
- if(p.grad < 0 ) then
- begin
- r:=false;
- end
- else
- for i:=0 to p.grad do
- readln(p.coef[i]);
- citeste_coef:=r;
- end;
- procedure citire_monom(var p:polinom);
- var c,g : integer;
- begin
- readln(c,g);
- init(p);
- while(g<>-1) do
- begin
- p.coef[g]:=p.coef[g]+c;
- if(g>p.grad) then
- p.grad:=g;
- while p.coef[p.grad]=0 do
- p.grad:=p.grad-1;
- readln(c,g);
- end;
- end;
- function citire_pol(var p:polinom):boolean;
- var o:integer;
- var r:boolean;
- begin
- r:=true;
- WriteLn('1 pentru polinom');
- WriteLn('2 pentru monoame');
- WriteLn('introduceti valoarea:');
- read(o);
- if(o = 1) then
- begin
- r:=citeste_coef(p);
- end
- else
- citire_monom(p);
- citire_pol:=r;
- end;
- procedure citire(var vp:vpolinom; var a:integer);
- var o:boolean;
- var i:integer;
- begin
- o:=true;
- i:=0;
- WriteLn('Introduceti gradul pentru verificarea valorii');
- read(a);
- while o = true do
- begin
- i:=i+1;
- o:=citire_pol(vp.p[i]);
- end;
- vp.c:=i-1;
- end;
- procedure add_monom(p:polinom; m:monom; var s:polinom);
- begin
- s:=p;
- s.coef[m.g]:=s.coef[m.g]+m.c;
- if(m.g>p.grad) then
- p.grad:=m.g;
- while (p.coef[p.grad]=0) and (p.grad>=0) do
- p.grad:=p.grad-1;
- end;
- procedure adauga_pol(p1:polinom; p2:polinom; var s:polinom);
- var i: integer;
- var m: monom;
- begin
- s:=p1;
- for i:=0 to p2.grad do
- begin
- m.c:=p2.coef[i];
- m.g:=i;
- add_monom(s,m,s);
- end;
- end;
- procedure add_polinoame(var vp : vpolinom);
- var i:integer;
- begin
- i:=1;
- adauga_pol(vp.p[1], vp.p[2], vp.rez);
- for i:=3 to vp.c do
- adauga_pol(vp.p[i],vp.rez, vp.rez);
- end;
- procedure calc_max(vp:vpolinom; a:integer; var r:integer);
- var max, i:integer;
- var ok: boolean;
- begin
- ok:=true;
- i:=1;
- while (ok=true) and (i<=vp.c) do
- begin
- if(vp.p[i].grad>=a) then
- begin
- max:=vp.p[i].coef[a];
- ok:=false;
- end
- else
- i:=i+1;
- end;
- i:=i+1;
- while(i<=vp.c) do begin
- if(vp.p[i].grad>=a)
- then
- begin
- if(vp.p[i].coef[a] > max) then
- max:=vp.p[i].coef[a];
- end;
- i:=i+1;
- end;
- r:=max;
- end;
- procedure tiparire (p:polinom; max:integer; a:integer);
- var i:integer;
- begin
- writeln('Polinomul rezultat este:');
- write(p.coef[p.grad],'x^',p.grad);
- for i:=p.grad-1 downto 0 do
- begin
- if p.coef[i]<>0 then
- if(p.coef[i]>0) then begin write('+',p.coef[i],'x^',i); end
- else write(p.coef[i],'x^',i);
- end;
- writeln('');
- writeln('Cea mai mare valoare pe pozitia ' , a , ' este ' , max);
- end;
- var vp:vpolinom;
- var a:integer;
- var r:integer;
- begin
- citire(vp,a);
- add_polinoame(vp);
- calc_max(vp,a,r);
- tiparire(vp.rez, r,a);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement