Exercice

Déclarer et initialiser statiquement un tableau d'entiers t avec des valeurs dont certaines seront nulles. Écrire une procédure qui parcoure le tableau t et qui imprime les index des éléments nuls du tableau, sans utiliser aucune variable de type entier. Une solution possible est donnée page suivante.

#include <stdio.h>

#define N 10
int t[N] = {1,2,0,11,0,12,13,14,0,4};

/*****************************************************************************/
/*                                                                           */
/*                              print1                                       */
/*   Premiere version                                                        */
/*                                                                           */
/*****************************************************************************/
void print1(void)
{
int *pdeb,*pfin,*p;

pdeb = &t[0];      /*   repère le premier élément de t   */
pfin = &t[N-1];    /*   repère le dernier élément de t   */

for (p = pdeb; p <= pfin; p++)
   if (*p == 0) printf("%d ",p - pdeb);
printf("\n");
}

/*****************************************************************************/
/*                                                                           */
/*                              print2                                       */
/*   Une autre version                                                       */
/*                                                                           */
/*****************************************************************************/
void print2(void)
{
int *pdeb,*pfin,*p;

pdeb = &t[0];     /* repère le premier élément de t                          */
pfin = pdeb + N;  /* repère l'élément (fictif) apres le dernier élément de t */

for (p = pdeb; p < pfin; p++)
   if (*p == 0) printf("%d ",p - pdeb);
printf("\n");
}

/*****************************************************************************/
/*                                                                           */
/*                              main                                         */
/*                                                                           */
/*****************************************************************************/
int main(void)
{
print1();
print2();
return 0;
}



Matthieu Moy 2017-02-08