// Exercice 1 : cf. fichier .py

// Exercice 2 : cf. fichier .py

// Exercice 3

// À mettre dans un main

double x = -100000000.;
double y = 100000000.;
double z = -0.00001;

printf("%.15f\n", (x + y) + z); // Le .15 impose 15 chiffres après la virgule afin de constater la différence.
printf("%.15f\n", x + (y + z));

double xbis = 0.0909847839877169;
double ybis = 0.6253155859070122;
double zbis = 0.786668034537743921;

if (((xbis + ybis) + zbis) == (xbis + (ybis + zbis))) printf("Pareil"); else printf("Pas pareil");

// La fin de l'exercice est spécifique à Python.

// Exercice 4 spécifique à Python

// Exercice 5 : cf. fichier .py

// Exercice 6

// Même comportement qu'en Python

#include <math.h>

double discriminant (double a, double b, double c)
{
  return b * b - 4 * a * c;
}

void imprimer_solutions_trinome (double a, double b, double c)
{
  double d = discriminant(a, b, c);
  if (d == 0.) printf("Une solution : %.15f.\n", -b / (2 * a));
  else if (d > 0.) printf("Deux solutions : %.15f et %.15f.\n", (-b - sqrt(d)) / (2 * a), (-b + sqrt(d)) / (2 * a));
  else printf("Pas de solution");
}

// Tester dans le main avec les valeurs demandées.

// Exercice 7 spécifique à Python

// Exercices 8 à 10 : explications sur le fichier .py

int nombre_tours (int arrivee)
{
  double x = (double) (arrivee + 1);
  int c = 0;
  while (x != arrivee)
  {
    x = (x + arrivee) / 2;
    c += 1;
  }
  return c;
}

printf("Nombre tours pour aller de 1 à 0 : %d.\n", nombre_tours(0)); // Exercice 8, réponse 1075
printf("Nombre tours pour aller de 2 à 1 : %d.\n", nombre_tours(1)); // Exercice 9, réponse 53
printf("Nombre tours pour aller de 101 à 100 : %d.\n", nombre_tours(100)); // Exercice 10, réponse 47