Chap. 7: Les tableaux

Premiers exemples

tableau.c

#include `<stdio.h>`

#include `<stdlib.h>`
#include `<stdbool.h>`


/* operations primitives sur les tableaux:
 - nouveau
 - lire
 - ecrire

 lire(i, N, T) = T[i]
 ecrire(a, i, N T) : T[i] = a

 typage particulier: la taille d'un tableau est de type 'size_t' (un entier_nat en realite)

 */

void affiche(size_t N, int T[N])
{
    int i;
    for (i = 0; i < N; i=i+1)
    {
     printf("T[%d] = %d\n", i, T[i]);
    }
}

bool cherche(int x, size_t N, int T[N])
{
    int i;
    for (i = 0; i < N; i=i+1)
    {
    if (T[i] == x)
    {
       return true;
    }
    }
    return false;
}

int indice(int x, size_t N, int T[N])
{
    int i;
    for (i = 0; i < N; i=i+1)
    {
    if (T[i] == x)
    {
       return i;
    }
    }
    return -1;
}

int compte(int x, size_t N, int T[N])
{
    int i;
    int c;
    c = 0;
    for (i = 0; i < N; i=i+1)
    {
    if (T[i] == x)
    {
       c = c+1;
    }
    }
    return c;
}

int max(size_t N, int T[N])
{
    int i;
    int m;
    m = T[0];
    for (i = 1; i < N; i=i+1)
    {
    if (T[i] > m)
    {
      m = T[i];
    }
    }
    return m;
}

void test_cherche(int x, size_t N, int T[N])
{
   bool ret;
   ret = cherche(x, N, T);
   if (ret)
   {
      printf("l'element %d est dans T\n", x);
   }
   else
   {
      printf("l'element %d n'est pas dans T\n", x);
   }
}

void test_indice(int x, size_t N, int T[N])
{
   int ind;
   ind = indice(x, N, T);
   if (ind == -1)
   {
      printf("l'element %d n'est pas dans T\n", x);
   }
   else
   {
      printf("l'element %d est dans T a la position %d\n", x, ind);
   }
}

void test_compte(int x, size_t N, int T[N])
{
   int c;
   c = compte(x, N, T);
   printf("l'element %d est present dans T %d fois\n", x, c);
}

void test_max(size_t N, int T[N])
{
   int m;
   m = max(N, T);
   printf("l'element maximum dans T vaut %d\n", m);
}

int main()
{
    /* creation d'un tableau */
    int T[10];    /* on definit le type T: tableau d'entier de taille 10 */

    /* on remplit le tableau */
    T[0] = -3;
    T[1] = 5;
    T[2] = 0;
    T[3] = 2;
    T[4] = 8;
    T[5] = -5;
    T[6] = 11;
    T[7] = 8;
    T[8] = 2;
    T[9] = 8;

    affiche(10, T);

    test_cherche(0, 10, T);
    test_cherche(1, 10, T);
    test_cherche(2, 10, T);
    test_cherche(8, 10, T);

    test_indice(0, 10, T);
    test_indice(1, 10, T);
    test_indice(2, 10, T);
    test_indice(8, 10, T);

    test_compte(0, 10, T);
    test_compte(1, 10, T);
    test_compte(2, 10, T);
    test_compte(8, 10, T);

    test_max(10,T);

    return EXIT_SUCCESS;
}