Exemplu Elev

download Exemplu Elev

of 11

description

Polinoame C++

Transcript of Exemplu Elev

  • De ce avem nevoie unii de ceilali?Proiect realizat de:Andreea, Adonis, Raul, Marius

    copyright 2006 www.brainybetty.com

  • Proiectul nostru este o prezentareVom lucra n echip pentru a implementa operaii cu polinoame cu coeficieni numere reale, folosind subprograme definite de utilizator.Munca noastr n echip se mparte astfel:Andreea : voi face o funcie care citete de la tastatur datele unui polinom (gradul i coeficienii polinomului, sub forma unui vector)o funcie care afieaz la monitor un polinom dat.o funcie care calculeaz i returneaz valoarea unui polinom ntr-un punct dat.Adonis : voi face o funcie care calculeaz suma a dou polinoame date, rezultatul fiind un polinom o funcie care citete datele a dou polinoame i afieaz polinomul sum. Voi folosi bineneles funciile definite de Andreea.Raul : voi face o funcie care calculeaz produsul a dou polinoame date, rezultatul fiind un polinom o funcie care citete datele a dou polinoame i afieaz polinomul produs. Voi folosi funciile definite de Andreea pentru citirea i afiarea unui polinom.Marius : voi faceProgramul principal n care utilizatorul introduce o opiune n funcie de care se va calcula una din operaiile cu polinoame:valoarea unui polinom ntr-un punctsuma a dou polinoame produsul a dou polinoame. Voi apela funciile definite de Andreea, Adonis i Raul.

    copyright 2006 www.brainybetty.com

  • AndreeaIntroducerea datelor unui polinom presupune citirea de la tastatur a gradului polinomului (un numr natural) i a coeficienilor acestuia (numere reale), ncepnd de la coeficientul dominant pn la termenul liber. Antetul funciei la care m-am gndit este: void citire(float a[ ], int &n)- void este tipul funciei- n este gradul polinomului, parametru transmis prin referin, pentru ca funcia s poat modifica valoarea acestui parametru, valoarea rmnnd moodificat i dup apel - a[ ] este vectorul ce reine coeficienii polinomului. Nu trebuie transmis prin referin, deoarece este un pointer constant la primul element din vector Antetul funciei pentru afiarea unui polinom : void afisare(float a[], int n)- parametrii nu trebuie transmii prin referin, pentru c nu i modific valoarea n corpul funciei.Pentru calculul valorii unui polinom ntr-un punct voi folosi o funcie de tip float, deoarece aceast operaie presupune de fapt calculul unei sume de numere reale.Antetul funciei la care m-am gndit este : float valoare(int n,float a[ ], float q)- q reprezint punctul n care se va calcula valoarea polinomului

    copyright 2006 www.brainybetty.com

  • AndreeaDefiniiile funciilor pe care le-am avut de fcut sunt urmtoarele:void citire(float a[ ],int &n){int i; coutn; do{ cout
  • AdonisImplementarea operaiei de adunare a dou polinoame presupune de fapt adunarea coeficineilor celor dou polinoame. Fie n i m gradul celor dou polinoame.- dac mn atunci gradul polinomului sum = max(n, m)- dac m=n, atunci gradul polinomului sum = cel mai mare numr natural k astfel nct ak + bk 0 Antetul primei funcii pe care o voi face este: void suma(int n,float a[ ],int m, float b[ ],int &gs,float s[ ])- Se adun polinomul de grad n ai crui coeficieni se rein n vectorul a cu polinomul de grad m ai crui coeficieni se rein n vectorul b, iar rezultatul este polinomul de grad gs, cu coeficienii memorai n vectorul s.- parametrul gs se transmite prin referin, deoarece se modific n corpul funciei i valoarea modificat este preluat de programul apelant.Antetul celei de-a doua funcii la care m-am gndit este: void adunare( )- Este o funcie fr parametri, care apeleaz funcia suma i funciile pentru citirea i afiarea unui polinom

    copyright 2006 www.brainybetty.com

  • AdonisDefiniiile celor dou funcii sunt urmtoarele:void suma(int n,float a[ ],int m,float b[ ],int &gs,float s[ ]){int i; if(n>m) gs=n;else if(m>n) gs=m; else{ gs=n; while(a[gs]+b[gs]==0) gs--;} for(i=0;i
  • RaulPentru a implementa operaia de nmulire a dou polinoame,am calculat matematic produsul a dou polinoame de grad n i m, cu coeficieni n dou tablouri a i b i am dedus urmtoarele formule:- gradul polinomului produs este egal cu n+m- termenul r al produsului este , i = 0,1,,n i j = 0,1,,m Astfel, antetul primei funcii pe care o voi face este: void produs(int n,float a[ ],int m, float b[ ],int &gp,float p[ ])- Lista parametrilor formali conine 6 parametri separai prin virgul, reprezentnd n ordine gradul n,coeficienii polinomului reinui n vectorul a, gradul m, coeficienii polinomului reinui n vectorul b, gradul gs i coeficienii memorai n vectorul p pentru polinomul produs.- parametrul gp se transmite prin referin, deoarece se modific n corpul funciei i valoarea modificat este preluat de programul apelant.A doua funcie care citete datele a dou polinoame, calculeaz i afieaz produsul lor este o funcie fr parametri, care apeleaz funcia produs i funciile pentru citirea i afiarea unui polinom definite de Andreea.

    copyright 2006 www.brainybetty.com

  • RaulDefiniiile celor dou funcii sunt urmtoarele:void produs(int n,float a[ ],int m,float b[ ],int &gp,float p[ ]){int i,j,r; gp=n+m; for(r=0;r
  • MariusMie mi revine sarcina de a crea programul principal. Am primit de la colegii mei definiiile funciilor care le voi folosi. Voi citi de la tastatur o opiune n funcie de care voi apela subprogramele corespunztoare operaiei dorite : 1- pentru calculul valorii unui polinom ntr-un punct, 2 - pentru adunarea a dou polinoame, 3 - pentru nmulirea a dou polinoame.Pentru declararea unui polinom voi folosi tipul de date tablou (vector) care reine coeficienii polinomului i o variabil (numr natural) care reine gradul polinomului. Voi declara astfel variabilele globale ce vor fi folosite n programul principal, dar care au fost deja folosite de colegii mei n subprograme.Voi folosi instruciuni de apel corespunztoare tipului funciei apelate, avnd grij ca numele funciei de la apel s coincid cu numele funciei din antet. Parametrii efectivi vor fi separai prin virgul i vor corespunde ca tip i numr cu parametrii formali din antetul subprogramului

    copyright 2006 www.brainybetty.com

  • MariusPuse cap la cap variabilele globale, subprogramele definite de colegii mei i programul principal creat de mine, rezult urmtorul program C++ care implementeaz cteva dintre operaiile cu polinoame.

    //programul principalvoid main(){ cout

  • ConcluziiEste clar c dac nu am fi lucrat n echip, am fi rezolvat mult mai greu problema sau chiar nu am fi rezolvat-o

    Faptul c fiecare dintre noi a avut de rezolvat o sarcin mai mic, rezolvarea ntregii probleme a durat mult mai puin

    Lucrnd n echip, am neles mult mai bine cum funcioneaz subprogramele

    Dac unul dintre noi nu i-ar fi rezolvat corect sarcina sau ar fi ntrziat cu rezolvarea ei, atunci ntreaga problem ar fi fost periclitat.

    copyright 2006 www.brainybetty.com