Les booléens

Année bissectile

bissextile.c

/* pour utiliser les booleens, on a besoin de la bibliotheque stdbool.h */
#include `<stdbool.h>`

#include `<stdlib.h>`

#include `<stdio.h>`

/* Algorithme | Langage C 
   ===========+==========
     booleen      bool
      vrai        true
      faux        false
       non          !
       et          &&
       ou          ||

 */

/* operation modulo dans les entiers: % */

/* operateurs de comparaison a valeurs dans les booleens:
              egal: ==
          non egal: !=
         superieur: >
         inferieur: <
 superieur ou egal: >=
 inferieur ou egal: <=

 */

bool divisible(int a, int b)
{
    return a%b == 0;
}

bool bissextile1(int annee)
{
    if (divisible(annee, 4))
    {
    if (divisible(annee, 100))
    {
      if (divisible(annee, 400))
      {
        return true;
      }
      else
      {
        return false;
      }
    }
    else
    {
      return true;
    }
    } 
    else
    {
    return false;
    }
}

bool bissextile2(int annee)
{
    return (annee%4 == 0) && ( (annee%100 != 0) || (annee%400 == 0));
}

void test1(int an)
{
    if (bissextile1(an))
    {
    printf("Selon bissextile1, l'annee %d est bissextile\n", an);
    }
    else
    {
    printf("Selon bissextile1, l'annee %d n'est pas bissextile\n", an);
    }
}

void test2(int an)
{
    if (bissextile2(an))
    {
    printf("Selon bissextile2, l'annee %d est bissextile\n", an);
    }
    else
    {
    printf("Selon bissextile2, l'annee %d n'est pas bissextile\n", an);
    }
}



int main()
{
    test1(2013); 
    test1(2012); 
    test1(2000); 
    test1(1900); 
    test2(2013); 
    test2(2012); 
    test2(2000); 
    test2(1900); 

    return EXIT_SUCCESS;
}

Racine d'un polynôme du second degré

second_degre.c

#include `<stdio.h>`

#include `<stdlib.h>`

#include `<math.h>` /* pour la racine carree */

double delta(double a, double b, double c)
{
    return b*b-4.0*a*c;
}

void second_degree(double a, double b, double c)
{
    double d; /* une variable d qui contiendra delta */
    printf("Recherche des racines du polynome (%8.3f)x^2+(%.1f)x+(%.0f)\n", a, b, c);
    if (a == 0.)
    {
    if (b == 0.)
    {
      if (c == 0.)
      {
        printf(" infinite de solutions\n");
      }
      else
      {
        printf(" pas de solution\n");
      }
    }
    else
    {
      printf(" 1 solution: %f\n", -c/b);
    }
    }
    else
    {
    d = delta(a, b, c);
    if (d < 0)
    {
      printf(" pas de solution\n");
    }
    else
    {
      if (d == 0.)
      {
        printf(" 1 solution: %f\n", -b/(2.0*a) );
      }
      else
      {
        printf(" 2 solutions: %f et %f\n", (-b-sqrt(d))/(2.0*a), (-b+sqrt(d))/(2.0*a) );
      }
    }
    }
}

int main()
{
    second_degree(0., 0., 0.);
    second_degree(0., 0., 1.);
    second_degree(0., 1., 2.);
    second_degree(1., 1., 1.);
    second_degree(1.,-4., 4.);
    second_degree(2.,-5.,-3.);
    return EXIT_SUCCESS;
}