Se creeaza o lista dublu inlantuita care calculeaza valoarea unui polinom de grad n.
Se citesc ca date de intrare:
x - valoarea necunoscutei
gr - gradul polinomului
coef - coeficientii polinomului
Pentru rezolvarea acestei aplicatii s-au folosit urmatoarele functii:
1. functia creare pentru construirea listei dublu inlantuite
2. functia putere care returneaza valoarea lui x la puterea gr
3. functia calcul_pol returneaza valoarea polinomului
4. functia listare_sd pentru afisarea polinomului si a rezultatului acestuia obtinut de
functia calcul_pol
5. functia principala main pentru citirea datelor de intrare si afisarea rezultatelor
// declararea structurii
typedef struct nod
{
double coef; //coeficientul
nod *prec;
nod *urm;
}*adr;
adr prim, ultim;
double x; // valoarea necunoscutei polinomului
// la creare in lista se adauga coeficientii polinomului
void creare(adr &prim, adr &ultim, double coef)
{
}
//functia putere returneaza valoarea lui x la puterea specificata de gr
double putere(double x, int gr)
{
double p=1;
for(int i=0;i<gr;i++)
p=p*x;
return p;
}
Laborator 2 Tehnici de programare
2
prep. univ. drd. Laura Cacovean
//functia calcul_pol care calculeaza valoarea polinomului
double calcul_pol(adr prim, int gr)
{
double valoare=0; // variabila folosita pentru calcularea
// valorii polinomului
while(prim) //atat timp cat prim!=NULL se calculeaza val polinomului
{
valoare = valoare + ( prim->coef * putere(x,gr) );
prim=prim->urm;
gr--;
}
return valoare; //functia returneaza rezultatul final (val pol)
}
//listarea polinomului
void listare_sd(adr prim, int gr) // caz 1
{
while(prim)
{
if( prim->coef >= 0)
cout<<" +"<<prim->coef<<"*";
else
cout<<" "<<prim->coef<<"*";
cout<<"x^"<<gr;
prim=prim->urm;
gr--;
}
}
Se cere implementarea aplicatiei 1 si verificarea algoritmului pe un exemplu:
1 2 3
Rezultat:
Creare lista:
Da-ti gradul maxim al polinomului: 2
introduceti coeficientul pentru elem 0 :1
introduceti coeficientul pentru elem 1 :2
introduceti coeficientul pentru elem 2 :3
Da-ti valoarea necuoscutei x=3
Valoarea polinomului este:
+1*x^2 +2*x^1 +3*x^0 = 18
Press any key to continue
prim ultim
Laborator 2 Tehnici de programare
3
prep. univ. drd. Laura Cacovean
Aplicatia 2:
Se creeaza doua liste dublu inlantuite. Se cere:
1. construirea unei singure liste astfel incat cea de a doua lista va fi adaugata la sfarsitul
primei liste.
2. Stergerea celei de a doua liste dublu inlantuite
Se citesc ca date de intrare lungimea listelor si valorile pentru fiecare nod din lista.
Pentru rezolvarea acestei aplicatii s-au folosit urmatoarele functii:
1. functia creare pentru construirea celor doua liste dublu inlantuite
2. functia lipire_liste care va adauga a doua lista la sfarsitul primei liste
3. functia listare_sd pentru afisarea listelor
4. functia sterg_lista_doi pentru stergerea celei de a doua liste
5. functia principala main pentru citirea datelor de intrare si afisarea rezultatelor
typedef struct nod
{
int info; //informatia este un nr intreg
nod *prec;
nod *urm;
}*adr,*adr1;
adr prim, ultim; // lista 1
adr1 prim1, ultim1, ant; //lista 2
void lipire_liste(adr prim, adr1 prim1, adr ultim, adr1 ultim1)
{
ultim->urm=prim1;
prim1->prec=ultim;
ultim=ultim1;
Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.