| preferate.ro - Polinoame | |
| Adauga referat | Contact | Publicitate |
| Prima pagina > Informatica > Detaliu referat |
|
Bacalaureat 2010
Vezi subiectele examenului de Bacalaureat din 2010 Rezultat Bacalaureat 2010 Aici se vor afisa rezultatele examenului de Bacalaureat din 2010
Teze Cu Subiect Unic 2010 informatii si sfaturi pentru pregatirea examenelor Lucrari licenta licente unice pentru orice specializare Referat :: PolinoamePolinoame Algebra polinoamelor incomplete de mai multe nedeterminate, implementare dinamică Structuri de date: Pentru implementarea unui polinom incomplet de mai mult nedeterminate am definit o clasă poli cu următoarele date: Int nr_var Numărul de nedeterminate ale polinomului Int nr_elem Numărul de elemente N u s e c i t e ș t e , c i e s t e i n i ț i a l i z a t î n f u n c ț i e d e e l e m e n t e l e i n t r o d u s e Float *coef Coeficienții polinomului (nu exista coeficienți de valoare 0 1) Int *gr[30] Vector de pointeri spre întregi reprezentând pentru fiecare coeficient puterile corespunzătoare fiecărei nedeterminate Ex: Pentru polinomul P(x, y, z)=x2y +1 G r [ 0 ] [ 0 ] = 2 , G r [ 0 ] [ 1 ] = 1 , G r [ 0 ] [ 0 ] = 0 G r [ 1 ] [ 0 ] = 0 , G r [ 0 ] [ 1 ] = 0 , G r [ 0 ] [ 0 ] = 0 Toate datele de mai sus sunt private pentru a nu fi permisă modificarea lor decât prin funcțiile clasei. Tot privată este și funcția pos pentru că nu trebuie să fie vizibilă din exterior. Operațiile efectuate asupra polinoamelor: ü Adunare ü Scădere ü Î nmulțirea a 2 polinoame ü Calculul derivatei în raport cu o variabilă specificată prin indice ü Calculul primitivei în raport cu o variabilă specificată prin indice class poli{ private: int nr_var; int nr_elem; float *coef; int *gr[30]; private: int pos(int *, int); public: poli(); void init(); void af(); void af_t(); void add_sub(poli&, poli&, int op); void mul(poli&, poli&); void deriv(int); void prim(int); void operator=(poli&); ~poli(); }; Prezentarea programului: 1. poli(); - constructorul clasei - inițializează polinomul ca polinom nul - nu poate fi decât public 2. void init(); - funcție publică ce inițializează polinomul cu valori citite de la tastatură - polinomul se consideră introdus corect, adică nu trebuie introduse aceleași secvențe de puteri (Ex: P(x)=5x+2+3) - se citesc coeficienți până când nu se mai introduce unul valid (în mod normal asta s-ar face frumos cu CTRL-Z, dar din păcate cscanf()-ul nu îl recunoaște) 3. void af(); - funcție publică pentru afișarea caracteristicilor (polinomul efectiv, numărul de variabile, numărul de elemente) 4. void af_t(); - funcție publică pentru afișarea în tabelul celor 10 vectori din programul demonstrativ - în mod normal nu ar avea ce căuta în bibliotecă 5. void add_sub(poli&, poli&, int op); - funcție publică pentru adunare/scădere; op=1 pentru adunare, op=-1 pentru scădere - funcția este comună pentru micșorarea codului - am ales parametrii adrese, nu pentru a-i modifica ci pentru a nu lucra cu copii ale lor (nu avea nici un rost) - sunt permise și apelări de genul: p. add(p1, p) sau chiar p. add(p, p) 6. void mul(poli&, poli&); - funcție publică pentru înmulțire - aceleași observații ca la funcția add_sub() 7. void deriv(int); - funcție publică pentru derivare în raport cu o variabilă - indicele variabilei este minim 1 și maxim nr_var 8. void prim(int); - funcție publică pentru aflarea unei primitive în raport cu o variabilă - indicele variabilei este minim 1 și maxim nr_var 9. void operator=(poli&); - redefinirea operatorului de atribuire (copiez varorile) - deși nu-l folosesc în programul demostrativ, trebuie redefinit pentru că în interiorul clasei sunt adrese și prin atribuirea implicită s-ar face și atribuire de adrese 10. ~poli(); - destructorul clasei Observație: Datele se consideră introduse corect. Sursa programului: M12t2. h class poli{ private: int nr_var; //nr de variabile int nr_elem; //nr de elemente float *coef; //coeficientii polinomului int *gr[30]; //gradele corespunzatoare private: int pos(int *, int); //caut un anumit termen si returnez pozitia //dupa conventia clasica (0.. n daca a fost //gasit, sau -1 daca nu) public: poli(); //constructor void init(); //citire de la tastatura void af(); //afisare void af_t(); //afisare trunchiata void add_sub(poli&, poli&, int op); //op=1 adunare, op=-1 scadere void mul(poli&, poli&); //inmultire void deriv(int); //derivare in raport cu o variabila void prim(int); //calculeaza o primitiva in raport cu o //variabila void operator=(poli&); //fac atribuire ~poli(); //destructor }; M12t2p14. cpp #include < stdio. h> #include < conio. h> #include < math. h> #include < alloc. h> #include < mem. h> #include " m12t2. h" #define X cprintf(" \n"); #define eps 1. e-6poli:: poli() //initializez un obiect nou{ coef=0; nr_var=0; nr_elem=0; memset(gr, 0, sizeof(gr)); } poli:: ~poli() { delete []coef; for (int i=0; i< nr_elem; i++) delete[]gr[i]; nr_elem=0; nr_var=0; } void poli:: operator=(poli & p) { if (coef==p. coef) return; this-> ~poli(); //il fac nul nr_var=p. nr_var; nr_elem=p. nr_elem; coef=new float[p. nr_elem]; for (int i=0; i< nr_elem; i++) { coef[i]=p. coef[i]; for (int j=0; j< nr_var; j++) {gr[i]=new i... Nota: Textul de mai sus reprezinta doar un extras din referat. Pentru versiunea completa a documentului apasa butonul Download.
|
Adauga un referat Sugestii |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| Termeni si conditii |
![]() | |