Bonjour je bloque sur un exercice en programmation en C, voici l'enoncé:
Pour calculer la racine carree d’un nombre a, il est possible
d’utiliser l’algorithme de Heron d’Alexandrie. Cette methode est la suivante.
Supposons que l’on cherche la racine x de a (x2 = a). Nous avons donc
2x2 = x2 + a, on en deduit 2x = x + a/x . Et finalement, on trouve que x est
solution de x = x/2 + a/2x . Nous pouvons donc construire la suite suivante :
x0 = a
xi+1 = xi/2 + a/2xi
Ecrire une fonction prenant en parametre un reel a et un entier n, qui calcule
et affiche les n premiers termes de la suite. On affichera egalement la racine
carree de a a titre de comparaison (on utilisera pour cela la fonction sqrt de
la bibliotheque math.h).
Voici mon programme qui ne marche pas, je ne vois pas ou est mon erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdio.h> #include <stdlib.h> #include <math.h> void Heron_Alex ( float a, int n); //Prototype de la fonction Heron_Alex int main() { int n = 0, compteur; float a = 0, racine = 0, c; printf("Racine carree d'un nombre par l'algorithme de Heron d'Alexandrie (exercice 1): \n\n\n"); printf("Valeur de a: "); scanf("%f", &a); printf("\n"); printf("Valeur de n: "); scanf("%d",& n); printf("\n\n"); Heron_Alex(a,n); //appel de la fonction Heron_Alex racine = sqrt(a); //fonction sqrt(racine carree) présente dans math.h printf("la racine carre par la fonction sqrt vaut %lf\n", racine); return 0; } void Heron_Alex (float a, int n) //fonction Heron_Alext { int compteur = 1; float c = 1; printf("Les %d premieres valeurs sont:\n",n); while (compteur <= n) { c = 1/2 * (c + a / c); printf("%f\n", c); compteur++; } }
Partager