Travaux Dirigés de Structures Discrètes n^{o} 2

— Licence Informatique —

▶ Exercice 1 Donner l’affichage du programme suivant :

#include <stdio.h>
const int nmax = 7;
static long int compteur;
static long int somme;
void reset()
{
  compteur = 0;  somme = 0;
}
void operation(int i)
{
  compteur++;    somme += i;
}
void affichage(void fonction(int))
{
  int n;
  for(n = 1; n < nmax; n++)  {
    reset();
    fonction(n);
    printf("%d\t%d\t%d\n", n, compteur, somme);
  }
}
void f(int n)
{
  if (n > 0) {
    f(n-1);
    f(n-1);
  } else operation(n);
}
void g(int n)
{
  if (n > 0) {
    operation(n);
    g(n-1);

  g(n-1);
}
}
void h(int n)
{
int i;
for(i = 1; i <= n; i++) f(i);
}
void j(int n)
{
if (n > 1) {
  j(n-1);
  j(n-2);
} else operation(n);
}
void k(int n)
{
int i;
if (n > 0)
  for (i = 1; i <= n; i++)
    k(n-1);
else operation(n);
}
int main()
{
int n;
printf("n  compteur  somme\n");
printf("Fonction f\n");
affichage(&f);
printf("Fonction g\n");
affichage(&g);
printf("Fonction h\n");
affichage(&h);
printf("Fonction j\n");
affichage(&j);
printf("Fonction k\n");
affichage(&k);
}