Home
/
Math
/
Exercice 1: Boucle tant que..., pour et répéter. __ (10 pts) On veut calculer a"pour un nombre réel a et un entier naturel n. 1. Ecrire la fonction Puissance(), utilisant la boucle pour __ afin de calculer a^n 2. Reprendre la fonction Puissance() en utilisant la boucle tant que.... puis __ répéter __ 3. Ecrire un algorithme SommePuissance() qui utilise la fonction Puissance0 pour calculer sum _(i=0)^na^i 4. Evaluer en fonction denle nombre de tour de boucle nécessaire pour calculer sum _(i=0)^na^i 5. Ecrire une deuxième version de l'algorithme permettant de calculer sum _(i=0)^na^i en cherchant cette fois-ci a minimiser le nombre de tour de boucle. Exercice 2 : Utilisation et manipulation des tableaux (3+4+3)=10pts Soit Tab, un tableau de taille 150 et disposant de n(1leqslant nleqslant 150) nombres réels. 1. Ecrire une fonction Moyenne() qui prend en entrées Tab et n puis renvoie la moyenne des éléments de Tab. 2. Ecrire une fonction Variance() qui prend aussi Tab et n en entrées et renvoie l'écart type des éléments du tableau On rappelle que la variance est la moyenne des carrés des écarts a la moyenne Var(X)=sum _(n=1)^infty (x,-bar (X))^2 avec bar (X)=(1)/(n)sum _(i=1)^nx_(i) qui est la moyenne de la série X.Par exemple pour Tab=10,4,6,7,8 on a bar (x)=(1)/(5)(10+4+6+7-8)=7et forr(Dart)=((10-7)^2+(4-7)^2+(6-7)^2+(7-7)^2+(8-7)^2)/(5)=4 3. Définir une procédure Supprime Val( ) qui supprime l'élément situé a une position k(1leqslant kleqslant N) du tableau Tab.

Question

Exercice 1: Boucle tant que..., pour et répéter. __ (10 pts) On veut calculer a"pour un nombre réel a et un entier naturel n. 1. Ecrire la fonction Puissance(), utilisant la boucle pour __ afin de calculer a^n 2. Reprendre la fonction Puissance() en utilisant la boucle tant que.... puis __ répéter __ 3. Ecrire un algorithme SommePuissance() qui utilise la fonction Puissance0 pour calculer sum _(i=0)^na^i 4. Evaluer en fonction denle nombre de tour de boucle nécessaire pour calculer sum _(i=0)^na^i 5. Ecrire une deuxième version de l'algorithme permettant de calculer sum _(i=0)^na^i en cherchant cette fois-ci a minimiser le nombre de tour de boucle. Exercice 2 : Utilisation et manipulation des tableaux (3+4+3)=10pts Soit Tab, un tableau de taille 150 et disposant de n(1leqslant nleqslant 150) nombres réels. 1. Ecrire une fonction Moyenne() qui prend en entrées Tab et n puis renvoie la moyenne des éléments de Tab. 2. Ecrire une fonction Variance() qui prend aussi Tab et n en entrées et renvoie l'écart type des éléments du tableau On rappelle que la variance est la moyenne des carrés des écarts a la moyenne Var(X)=sum _(n=1)^infty (x,-bar (X))^2 avec bar (X)=(1)/(n)sum _(i=1)^nx_(i) qui est la moyenne de la série X.Par exemple pour Tab=10,4,6,7,8 on a bar (x)=(1)/(5)(10+4+6+7-8)=7et forr(Dart)=((10-7)^2+(4-7)^2+(6-7)^2+(7-7)^2+(8-7)^2)/(5)=4 3. Définir une procédure Supprime Val( ) qui supprime l'élément situé a une position k(1leqslant kleqslant N) du tableau Tab.

Exercice 1: Boucle tant que..., pour et répéter. __ (10 pts)
On veut calculer a"pour un nombre réel a et un entier naturel n.
1. Ecrire la fonction Puissance(), utilisant la boucle pour __ afin de calculer a^n
2. Reprendre la fonction Puissance() en utilisant la boucle tant que.... puis __
répéter __
3. Ecrire un algorithme SommePuissance() qui utilise la fonction Puissance0
pour calculer sum _(i=0)^na^i
4. Evaluer en fonction denle nombre de tour de boucle nécessaire pour calculer
sum _(i=0)^na^i
5. Ecrire une deuxième version de l'algorithme permettant de calculer
sum _(i=0)^na^i en
cherchant cette fois-ci a minimiser le nombre de tour de boucle.
Exercice 2 : Utilisation et manipulation des tableaux (3+4+3)=10pts
Soit Tab, un tableau de taille 150 et disposant de n(1leqslant nleqslant 150) nombres réels.
1. Ecrire une fonction Moyenne() qui prend en entrées Tab et n puis renvoie la
moyenne des éléments de Tab.
2. Ecrire une fonction Variance() qui prend aussi Tab et n en entrées et renvoie
l'écart type des éléments du tableau On rappelle que la variance est la
moyenne des carrés des écarts a la moyenne Var(X)=sum _(n=1)^infty (x,-bar (X))^2 avec bar (X)=(1)/(n)sum _(i=1)^nx_(i)
qui est la moyenne de la série X.Par exemple pour Tab=10,4,6,7,8 on a
bar (x)=(1)/(5)(10+4+6+7-8)=7et forr(Dart)=((10-7)^2+(4-7)^2+(6-7)^2+(7-7)^2+(8-7)^2)/(5)=4
3. Définir une procédure Supprime Val( ) qui supprime l'élément situé a une
position k(1leqslant kleqslant N) du tableau Tab.

Solution

expert verifiedExpert Verified
4.0(236 Voting)
avatar
GustavoMaster · Tutor for 5 years

Answer

## Exercice 1: Boucle tant que...pour...et répéter. (10 pts)<br /><br />**1. Fonction Puissance() avec boucle pour:**<br /><br />```cpp<br />double Puissance(double a, int n) {<br /> double resultat = 1.0;<br /> for (int i = 0; i < n; i++) {<br /> resultat *= a;<br /> }<br /> return resultat;<br />}<br />```<br /><br />**2. Fonction Puissance() avec boucle tant que et répéter:**<br /><br />```cpp<br />double Puissance(double a, int n) {<br /> double resultat = 1.0;<br /> int i = 0;<br /> if (n > 0) { // Gérer le cas où n = 0<br /> do {<br /> resultat *= a;<br /> i++;<br /> } while (i < n);<br /> }<br /> return resultat;<br />}<br /><br /><br />double Puissance_repeter(double a, int n) {<br /> double resultat = 1.0;<br /> int i = 0;<br /> if (n > 0) { // Gérer le cas où n = 0<br /> repeat {<br /> resultat *= a;<br /> i++;<br /> } until (i == n);<br /> }<br /> return resultat;<br />}<br />```<br /><br />**3. Algorithme SommePuissance():**<br /><br />```cpp<br />double SommePuissance(double a, int n) {<br /> double somme = 0.0;<br /> for (int i = 0; i <= n; i++) {<br /> somme += Puissance(a, i);<br /> }<br /> return somme;<br />}<br />```<br /><br />**4. Nombre de tours de boucle pour SommePuissance():**<br /><br />Le calcul de ∑(i=0 à n) a^i nécessite **n+1** tours de boucle dans la fonction `SommePuissance()`, un pour chaque valeur de `i` de 0 à `n`. La fonction `Puissance()` appelée à chaque tour effectue elle-même `i` tours.<br /><br />**5. Algorithme SommePuissance() optimisé:**<br /><br />On peut optimiser le calcul en utilisant la formule de la somme des termes d'une suite géométrique:<br /><br />∑(i=0 à n) a^i = (1 - a^(n+1)) / (1 - a) si a ≠ 1<br /><br />```cpp<br />double SommePuissanceOptimisee(double a, int n) {<br /> if (a == 1.0) {<br /> return n + 1;<br /> } else {<br /> return (1.0 - Puissance(a, n + 1)) / (1.0 - a);<br /> }<br />}<br />```<br /><br />Cette version ne nécessite qu'un seul appel à `Puissance()` et donc un nombre d'opérations constant, beaucoup plus efficace pour les grandes valeurs de `n`.<br /><br /><br />## Exercice 2 : Utilisation et manipulation des tableaux (10 pts)<br /><br />**1. Fonction Moyenne():**<br /><br />```cpp<br />double Moyenne(double Tab[], int n) {<br /> double somme = 0.0;<br /> for (int i = 0; i < n; i++) {<br /> somme += Tab[i];<br /> }<br /> return somme / n;<br />}<br />```<br /><br />**2. Fonction Variance():**<br /><br />```cpp<br />double Variance(double Tab[], int n) {<br /> double moyenne = Moyenne(Tab, n);<br /> double sommeCarresEcarts = 0.0;<br /> for (int i = 0; i < n; i++) {<br /> sommeCarresEcarts += (Tab[i] - moyenne) * (Tab[i] - moyenne);<br /> }<br /> return sommeCarresEcarts / n;<br />}<br />```<br /><br />**3. Procédure SupprimeVal():**<br /><br />```cpp<br />void SupprimeVal(double Tab[], int &n, int k) {<br /> if (k >= 1 && k <= n) {<br /> for (int i = k - 1; i < n - 1; i++) {<br /> Tab[i] = Tab[i + 1];<br /> }<br /> n--; // Décrémenter la taille effective du tableau<br /> } else {<br /> // Gérer l'erreur : k hors limites<br /> std::cerr << "Erreur: indice k hors limites." << std::endl;<br /> }<br />}<br />```<br /><br />Notez l'utilisation de `int &n` pour passer `n` par référence, ce qui permet de modifier la valeur de `n` dans la fonction appelante et ainsi refléter la suppression de l'élément dans le tableau. L'ajout d'un message d'erreur permet de gérer les cas où `k` est hors des limites du tableau.<br />
Click to rate: