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
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define PI 3.141592653
#define TMP 10
// Prototypes
double toSolve(double);
double resolution(double);
void push(double, double[], size_t);
size_t inTab(double, double[], size_t);
int main()
{
// Déclarations des variables
double x0; // Valeur initiale
double racine; // Position à laquelle l'avion touche le sol
// On commence par entrer la valeur initale
printf("Entrez la valeur initiale : ");
scanf("%lf", &x0);
printf("x=%lf\n", x0);
// Calcul de la racine de la fonction
racine=resolution(x0); // On appelle uniquement la fonction resolution pour calculer la racine de la fonction donnée
printf("\nLa racine de notre fonction est : %lf \n",racine);
return 0;
}
double toSolve(double x)
{
return cos(x) + PI/2;
}
// Insère un élément au début d'un tableau en décalant tout le reste
void push(double x, double tmp[], size_t n) {
memmove(tmp+1, tmp, (n-1) * sizeof(*tmp));
tmp[0]=x;
}
// Vérifie si un élément est présent dans un tableau
size_t inTab(double x, double tmp[], size_t n) {
size_t i;
for (i=0; i < n; i++) {
if (fabs(tmp[i] - x) < 1e-3) return i+1;
}
return 0;
}
double resolution (double x0)
{
double tmp[TMP]={0};
while (1) {
x0=toSolve(x0);
printf("x0=%lf\n", x0);
if (inTab(x0, tmp, TMP)) break;
push(x0, tmp, TMP);
}
return x0;
} |
Partager