summaryrefslogtreecommitdiff
path: root/sem_2/HLIN202/TP/TP11-12/exo 8.txt
blob: 3284acd7d4d5950db16f80b8838e11bb31682f7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
struct polynome {
int degree;
double *coefs;
};

1) polynome cree (){
	polynome ret;
	std::cout<<" Entrez le degree du polynome " << std::endl;
	std::cin>> ret.degree;
	ret.coefs = new double[ret.degree];
	return ret;
}
2) void init ( polynome * poly ) {
	for ( int i= 0; i < poly->degree; i ++ ) {
		std::cout<<" Entrez le coefficient pour x^" << i <<std::endl;
		std::cin >> poly->coefs[i];
		std::cout<<std::endl;
	}
}

3) void affiche ( polynome poly ) {
	for ( int i =0; i <poly.degree; i ++ ) {
		std::cout<<poly.coef[i] << "* X^"<<i<<" "<<i ==  poly.degree-1 ? " " : " + ";
		}
	std::cout<<std::endl;
}

4 ) polynome derive ( polynome poly ) {
	polynome derivee;
	derivee.degree = poly.degree - 1;
	derivee.coefs = new double[direvee.degree];
	for (int i = 0; i < derivee.degree; i ++ ) {
		derivee.coefs[i]= poly.coefs[i+1]* (i + 1);
	}
	return derivee;
}

5 ) polynome primitive ( polynome poly ) {
	polynome primitive;
	primitive.degree = poly.degree + 1;
	primitive.coefs = new double[primitive.degree];
	primitive.coefs[0]= 0;
	for (int i = 1; i < primitive.degree; i ++ ) {
		primitive.coefs[i]= poly.coefs[i-1]* (1/(double)(i + 1));
	}
	return primitive;
}

6) double evalue ( polynome poly, double x) {
	double ret;
	for ( int i = 0; i < poly.degree; i ++ ) {
		ret += ret.coefs[i] * pow ( x, i);
}
return ret;
}

EXERCICE 9 :

1 ) pile init () {
	pile pilvid;
	pilvid.cardinal=0;
	pilvid.suivant=NULL;
}
2 ) int cardinalpile ( pile pil ) {
	return pil.cardinal;
}
3 ) bool estvide ( pile pil ) {
	return pil.cardinal == 0;
}
4 ) void empiler ( pile *pil, int n) {
	pil->cardinal ++;
	cellule * ptr = new cellule;
	ptr->contenu = n;
	ptr->suivant = pil->premier;
	pil->premier = ptr;
}

5 ) int depiler (pile * pil) {
 pil->cardinal --;
int ret = pil->premier->contenu;
cellule * ptr = pil->premier->suivant;
delete pil->premier;
pil->premier = ptr;
return ret;
}

6 ) 
void libere ( pile * pil) {
cellule*cell= pil->premier;
while ( cell->suivant != NULL) {
	delete cell;
	cell = cell->suivant;
}
delete[] cell;
delete[] pil;
}

7 ) void affichepile ( pile pil ) {
cellule *cell = pil.premier;
std::cout<<cell->contenu<< " ";
while ( cell->suivant != NULL ) {
cell= cell->suivant;
std::cout<<cell->contenu << " ";
}
cell= cell->suivant;
std::cout<<cell->contenu << " ";
}