2012 kulonfeladat1
Különfeladat: Polinomok tömbök segítségével - fordítva
Írjunk programot, mely kiszámolja egy legföljebb 5-ödfokú polinom fokát és helyettesítési értékét!
A polinomokat egyszerűen együtthatóinak tömbjeként kezeljük,
például a p1(x) = 2x4 + x3 − 5x + 12 polinomot egy olyan p1 nevű
tömbbel adhatjuk meg, melynek elemei: p1[0]=0
,
p1[1]=2
, p1[2]=1
,
p1[3]=0
, p1[4]=-5
,
p1[5]=12
.
Írjunk két függvényt a main()-en kívül:
1. Az egyik függvény legyen az, amely megállapítja, és értékként visszaadja egy polinom fokát! Ennek deklarációja lehet például a következő:
int fok(float polinom[]);
hívása például fok( p1 )
, ahol p1
egy már definiált polinom.
Az algoritmus egyszerűen keresse meg a legkisebb indexű nemnulla
értéket a polinomot megadó tömbben. Az azonosan nulla polinom fokát
mínusz végtelennek szokás definiálni, de ekkor e függvény adjon vissza -1-et!
E függvényhez el kell tudnunk dönteni, hogy egy
lebegőpontosan ábrázolt szám egyenlő-e nullával. A számábrázolás
pontatlansága miatt az (a == 0.0)
feltétel nem lesz jó, ezért egy
számról akkor fogjuk azt mondani, hogy 0, ha valamely előre megadott
EPSILON
értéknél abszolút értékben kisebb. Lehet például EPSILON = 1e-10
, vagyis 10 − 10. Használjuk az alábbi kódot (vagy helyettesítsük egy jobbal):
int kbNulla(float a) { float EPSILON = 1e-10; if (a < EPSILON && a > -EPSILON) return 1; return 0; }
2. Írjunk egy függvényt, mely kiszámolja egy polinom értékét egy megadott helyen!
float poli_ertek(float polinom[], float x);
Például a fent megadott p1 polinom és x=-1.0
esetén a
poli_ertek(p1, x)
függvényhívás 18.0
-át ad vissza. E függvényben használjuk a fokszámot megadó függvényt.
A main függvényben az alábbi polinomokat definiáljuk, majd mindegyiknek
írjuk ki a fokát és a helyettesítési értékét az x = 1.2
helyen!
int main(void) { float p1[MAX_POL]={0,1,0,0,0,0}; float p2[MAX_POL]={1,0,0,0,0,1}; float p4[MAX_POL]={0,-1,0,2,0,-10}; }
A két függvény és a kbNulla
függvény mindegyikét a main előtt
deklaráljuk, és a main után definiáljuk!