Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROCEDURE SmanjiZa(st:CARDINAL; p: Polinom; VAR rez: Polinom);
- VAR temp, pom:Polinom;
- BEGIN
- Anuliraj(rez);
- IF p^.st > st THEN
- Kopiraj(p, rez);
- temp := rez;
- pom := NIL;
- WHILE (temp # NIL) AND (temp^.st >= st) DO
- pom := temp;
- temp := temp^.veza;
- END;
- IF temp#NIL THEN
- pom^.veza := NIL;
- DisposePolinom(temp);
- END;
- temp := rez;
- WHILE temp#NIL DO
- temp^.st := temp^.st - st;
- temp := temp^.veza;
- END;
- ELSIF p^.st = st THEN
- NEW(rez);
- rez^.st := 0;
- rez^.k := p^.k;
- rez^.veza := NIL;
- ELSE
- NEW(rez);
- rez^.st := 0;
- rez^.k := 0.0;
- rez^.veza := NIL;
- END;
- END SmanjiZa;
- // stampa monome sa parnim stepenom
- PROCEDURE ParniStepen (p:Polinom);
- VAR temp,pom:Polinom;
- BEGIN
- temp:=p;
- WHILE (temp#NIL) DO
- IF NOT ODD(temp^.st) THEN
- NEW(pom);
- pom^.st:=temp^.st;
- pom^.k:=temp^.k;
- Stampaj(pom,1);
- DISPOSE(pom);
- WriteLn;
- END;
- temp:=temp^.veza;
- END;
- END ParniStepen;
- // stampa monome kod kojih je koeficijent veci od stepena
- PROCEDURE KoefVeciSt (p:Polinom);
- VAR temp,pom:Polinom;
- BEGIN
- IF p#NIL THEN
- temp:=p;
- WHILE (temp#NIL) DO
- IF (temp^.k > FLOAT(temp^.st)) THEN
- NEW(pom);
- pom^.k:=temp^.k;
- pom^.st:=temp^.st;
- Stampaj(pom,1);
- DISPOSE(pom);
- WriteLn;
- END;
- temp:=temp^.veza;
- END;
- END;
- END KoefVeciSt;
- // stampa monome kod kojih je koef veci od stepena
- PROCEDURE VeciOdSt (p:Polinom);
- VAR temp,monom:Polinom;
- BEGIN
- IF p#NIL THEN
- temp:=p;
- WHILE (temp#NIL) DO
- IF temp^.k > FLOAT(temp^.st) THEN
- NEW(monom);
- monom^.k:=temp^.k;
- monom^.st:=temp^.st;
- Stampaj(monom,1);
- DISPOSE(monom);
- temp:=temp^.veza;
- ELSE
- temp:=temp^.veza;
- END;
- END;
- END;
- END VeciOdSt;
- // izbaci iz liste sve (koji zadovoljavaju kriterijum)
- // u ovom slučaju koeficijente veće od 2
- PROCEDURE IzbaciSve (VAR p:Polinom);
- VAR temp, prethodni:Polinom;
- BEGIN
- WHILE (p#NIL) AND (p^.k > 2.0) DO
- temp:=p;
- p:=p^.veza;
- DISPOSE(temp);
- END;
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- IF (temp^.k > 2.0) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END IzbaciSve;
- // prebrojava neparne stepene monoma i stampa
- PROCEDURE BrojNep (p:Polinom);
- VAR temp,monom:Polinom;
- i:CARDINAL;
- BEGIN
- IF p#NIL THEN
- temp:=p;
- WHILE (temp#NIL) DO
- IF ODD(temp^.st) THEN
- INC(i);
- NEW(monom);
- monom^.st:=temp^.st;
- monom^.k:=temp^.k;
- Stampaj(monom,1);
- WriteLn;
- DISPOSE(monom);
- temp:=temp^.veza;
- ELSE
- temp:=temp^.veza;
- END;
- END;
- END;
- IF i=0 THEN
- WrieteString('U polinomu nema neparnih stepena.');
- ELSE
- WriteString('Polinom ima ');
- WriteCard(i,1);
- WriteString(' monoma sa neparnim stepenima.');
- WriteLn;
- END;
- END BrojNep;
- // odstranjuje monome sa negativnim koeficijentom
- PROCEDURE BrisiNegKoef (VAR p:Polinom);
- VAR temp,neg,monom:Polinom;
- BEGIN
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp#NIL) DO
- IF (temp^.k < 0.0) THEN
- NEW(monom);
- monom^.k:=temp^.k;
- monom^.st:=temp^.st;
- monom^.veza:=NIL;
- UbaciMonom(monom,neg);
- END;
- temp:=temp^.veza;
- END;
- Oduzmi(p,neg,p);
- DisposePolinom(neg);
- END;
- END BrisiNegKoef;
- // ispravnost polinoma, redoslednom od 0 stepeni.
- PROCEDURE Check (p:Polinom):BOOLEAN;
- VAR ok:BOOLEAN;
- temp:Polinom;
- BEGIN
- temp:=p;
- ok:=TRUE;
- WHILE (temp^.veza#NIL) DO
- IF (temp^.st < temp^.veza^.st) OR (temp^.k = 0.0) THEN
- ok:=FALSE;
- END;
- temp:=temp^.veza;
- END;
- RETURN ok;
- END Check;
- // Deli polinom na parne i neparne
- PROCEDURE Rasclani (p:Polinom;VAR parni,neparni:Polinom);
- VAR temp:Polinom;
- BEGIN
- IF (p#NIL) THEN
- Anuliraj(parni);
- Anuliraj(neparni);
- temp:=p;
- WHILE (temp#NIL) DO
- IF ODD(temp^.st) THEN
- UbaciMonom(temp,neparni);
- ELSE
- UbaciMonom(temp,parni);
- END;
- temp:=temp^.veza;
- END;
- END;
- END Rasclani;
- // odsranjuje negativne(koeficijente) monome
- PROCEDURE OdstraniNeg (VAR p:Polnom);
- VAR temp, prethodni:Polinom;
- BEGIN
- IF (p#NIL) THEN
- WHILE (p#NIL) AND (p^.k < 0.0) DO
- temp:=p;
- p:=p^.veza;
- DISPOSE(temp);
- END;
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- IF (temp^.k < 0.0) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END;
- END OdstraniNeg;
- // Brise svaki drugi monom u polinomu
- // tj briše monome na parnim pozicijama
- PROCEDURE Svaki2 (VAR p:Polinom);
- VAR temp,prethodni:Polinom;
- i:CARDINAL;
- BEGIN
- i:=1;
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- INC(i);
- IF (i MOD 2 = 0) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END Svaki2;
- // Briše monome na neparnim pozicijama
- PROCEDURE Svaki1 (VAR p:Polinom);
- VAR temp,prethodni:Polinom;
- i:CARDINAL;
- BEGIN
- i:=1;
- IF (p#NIL) THEN
- temp:=p;
- p:=p^.veza;
- DISPOSE(temp);
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- INC(i);
- IF (i MOD 2 = 0) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END Svaki1;
- // Uklanja monome sa neparnim stepenom
- PROCEDURE NeparniStepeni (VAR p:Polinom);
- VAR temp, prethodni:Polinom;
- BEGIN
- IF (p#NIL) THEN
- WHILE (p#NIL) AND (p^.st MOD 2 # 0) DO
- temp:=p;
- p:=p^.veza;
- DISPOSE(temp);
- temp:=p;
- END;
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- IF (temp^.st MOD 2 # 0) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END;
- END NeparniStepeni;
- // Izbacuje monom sa max koef
- PROCEDURE IzbaciMaxKoef (VAR p:Polinom);
- VAR temp, prethodni:Polinom;
- max:REAL;
- BEGIN
- IF (p#NIL) THEN
- temp:=p;
- max:=temp^.k;
- (* nalazenje maxa *)
- WHILE (temp#NIL) DO
- IF (temp^.k > max) THEN
- max:=temp^.k;
- END;
- temp:=temp^.veza;
- END;
- (* brisanje maxa *)
- WHILE (p#NIL) AND (p^.k = max) DO
- temp:=p;
- p:=p^.veza;
- DISPOSE(temp);
- END;
- IF (p#NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- prethodni:=temp;
- temp:=temp^.veza;
- IF (temp^.k = max) THEN
- prethodni^.veza:=temp^.veza;
- DISPOSE(temp);
- temp:=prethodni;
- END;
- END;
- END;
- END;
- END IzbaciMaxKoef;
- // stampa monome sa keficijentom vecim od stepena
- PROCEDURE VeciOdStepena (p:Polinom);
- VAR temp,monom:Polinom;
- BEGIN
- IF (p#NIL) THEN
- WriteString("Monomi sa koeficijentom vecim od stepena: ");
- WriteLn;
- Anuliraj(monom);
- temp:=NIL;
- WHILE (temp#NIL) DO
- IF (temp^.k>FLOAT(temp^.st)) THEN
- NEW(monom);
- monom^.k:=temp^.k;
- monom^.st:=temp^.st;
- monom^.veza:=NIL;
- Stampaj(monom,1);
- WriteLn;
- END;
- temp:=temp^.veza;
- END;
- END;
- END VeciOdStepena;
- // procedura povecava keoficijen monoma za prethodni
- PROCEDURE PovecajZaPrethodni (VAR p:Polinom);
- VAR temp:Polinom;
- BEGIN
- IF (p#NIL) AND (p^.veza # NIL) THEN
- temp:=p;
- WHILE (temp^.veza#NIL) DO
- temp^.veza^.k:=temp^.veza^.k + temp^.k;
- temp:=temp^.veza;
- END;
- END;
- END PovecajZaPrethodni;
- // artimetička sredina koeficijenata polinoma
- PROCEDURE Avg (p:Polinom): REAL;
- VAR temp:Polinom;
- br:CARDINAL;
- avg,sum:REAL;
- BEGIN
- IF (p#NIL) THEN
- temp:=p;
- i:=0;
- sum:=0.0;
- WHILE (temp#NIL) DO
- sum:=sum+temp^.k;
- INC(br);
- temp:=temp^.veza;
- END;
- avg:=sum / FLOAT(br);
- END;
- RETURN avg
- END Avg;
- // monom sa najvećim proizvodom k i st
- PROCEDURE MaxProizvod (p:Polinom);
- VAR temp,mon:Polinom;
- max,k,pom:REAL;
- st:CARDINAL;
- BEGIN
- Anuliraj(mon);
- IF (p#NIL) THEN
- temp:=p;
- max:=temp^.k * FLOAT(temp^.st);
- st:=temp^.st;
- k:=temp^.k;
- temp:=temp^.veza;
- WHILE (temp#NIL) DO
- pom:=temp^.k * FLOAT(temp^.st);
- IF (pom>max) THEN
- max:=pom;
- st:=temp^.st;
- k:=temp^.k;
- END;
- temp:=temp^.veza;
- END;
- END;
- PostaviClan(k,st,mon);
- WriteString("Stepen sa najvecim proizvodom k i st: ");
- WriteLn;
- Stampaj(mon,1);
- DISPOSE(mon);
- END MaxProizvod;
- // uvecaj stepen za 'st'
- PROCEDURE UvecajStepen (VAR p:Polinom;st:CARDINAL);
- VAR temp:Polinom;
- BEGIN
- IF (p#NIL) AND (st#0) THEN
- temp:=p;
- WHILE (temp#NIL) DO
- temp^.st:=temp^.st + st;
- temp:=temp^.veza;
- END;
- END;
- END UvecajStepen;
- // stampa neparne stepene
- PROCEDURE StampajNepSt (p:Polinom);
- VAR temp,mon:Polinom;
- BEGIN
- IF (p#NIL) THEN
- Anuliraj(mon);
- temp:=p;
- WHILE (temp#NIL) DO
- IF (temp^.st MOD 2 # 0) THEN
- NEW(mon);
- mon^.st:=temp^.st;
- mon^.k:=temp^.k;
- Stampaj(mon,1);
- WriteLn;
- DISPOSE(mon);
- END;
- temp:=temp^.veza;
- END;
- END;
- END StampajNepSt;
- // izbacuje polinom najveceg stepena
- PROCEDURE MonMaxSt (VAR rez:Polinom; p:Polinom);
- VAR temp,mon:Polinom;
- BEGIN
- Anuliraj(rez);
- Kopiraj(p,rez);
- IF (rez#NIL) THEN
- temp:=rez;
- NEW(mon);
- mon^.st:=temp^.st;
- mon^.k:=temp^.k;
- mon^.veza:=NIL;
- Oduzmi(rez,mon,rez);
- END;
- END MonMaxSt;
- // Ispisuje monome ciji su koef veci od stepena
- PROCEDURE KoefSt (p:Polinom);
- VAR mon:Polinom;
- BEGIN
- Anuliraj(mon);
- IF (p#NIL) THEN
- WHILE (p#NIL) DO
- IF (p^.k > FLOAT(p^.st)) THEN
- NEW(mon);
- mon^.st:=p^.st;
- mon^.k:=p^.k;
- mon^.veza:=NIL;
- Stampaj(mon,1);
- WriteLn;
- DISPOSE(mon);
- END;
- p:=p^.veza;
- END;
- END;
- END KoefSt;
- // ispisuje koeficijent minimalnog stepena
- PROCEDURE KoefMinSt (p:Polinom):REAL;
- VAR temp:Polinom;
- BEGIN
- IF (p#NIL) THEN
- WHILE (temp^.veza # NIL) THEN
- temp:=temp^.veza;
- END;
- RETURN temp^.k;
- END;
- END KoefMinSt;
- // najveci koeficijent
- PROCEDURE MaxKoef (p:Polinom):REAL;
- VAR temp:Polinom;
- max:REAL;
- BEGIN
- IF (p#NIL) THEN
- max:=p^.k;
- temp:=p^.veza;
- WHILE (temp#NIL) DO
- IF (temp^.k > max) THEN
- max:=temp^.k;
- END;
- temp:=temp^.veza;
- END;
- END;
- RETURN max
- END MaxKoef;
- // Procedura koja mnozi polinom 'n' puta
- PROCEDURE BrojPuta (VAR p:Polinom; n:REAL);
- VAR temp:Polinom;
- BEGIN
- IF (p#NIL) AND (n#0) THEN
- temp:=p;
- WHILE (temp#NIL) DO
- temp^.k:=temp^.k * n;
- temp:=temp^.veza;
- END;
- END;
- END BrojPuta;
- // Izvod polinoma
- PROCEDURE Izvod (p:Polinom;VAR rez:Polinom);
- VAR temp:Polinom;
- BEGIN
- Anuliraj(rez);
- IF (p#NIL) THEN
- WHILE (p#NIL) AND (p^.st>0) DO
- NEW(temp);
- temp^.k:=temp^.k * FLOAT(temp^.st);
- temp^.st:=temp^.st - 1;
- UbaciMonom(temp,rez);
- DISPOSE(temp);
- p:=p^.veza;
- END;
- END;
- END Izvod;
- // Kompozicija procedura
- PROCEDURE Kompozicija (p,q:Polinom; VAR rez:Polinom);
- VAR temp:Polinom;
- BEGIN
- Anuliraj(rez);
- IF (p#NIL) AND (q#NIL) THEN
- WHILE (p#NIL) DO
- PolinomNaN(q,p^.st,temp);
- BrojPuta(temp,p^.k);
- SaberiNa(temp,rez);
- p:=p^.veza;
- END;
- END
- END Kompozicija;
- // Izracunaj vr polinoma za uneto avg
- PROCEDURE Izracunaj (a:REAL;p:Polinom):REAL;
- VAR temp,rez:Polinom;
- BEGIN
- IF (p#NIL) AND (a#0.0) THEN
- Anuliraj(temp);
- PostaviClan(a,0,temp);
- Kompozicija(p,temp,rez);
- RETURN rez^.k;
- END;
- END Izracunaj;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement